汇总函数结果在选择语句
希望下面的代码应该证明我想要实现的。汇总函数结果在选择语句
问题是,当我尝试计算VatableCash
时,没有任何输入选择被解决,所以当我尝试选择它时出现“无效列”。
对不起,如果有明显的事情我可以在这里做。 SQL不是我的强项之一。
select
OrderHeader.ID,
sum(OrderLine.NetPrice) as OrderLineNetPrice,
sum(OrderLine.GrossPrice) as OrderLineGrossPrice,
sum(
case when PaymentOption_ID = 8
then Payment.Amount
else 0
end
) as TotalCashAmount,
((OrderLineGrossPrice - OrderLineNetPrice)/OrderLineGrossPrice) * TotalCashAmount as VatableCash
from OrderHeader
inner join Payment on Payment.OrderHeader_ID = OrderHeader.ID
inner join OrderLine on OrderLine.OrderHeader_ID = OrderHeader.ID
group by OrderHeader.ID
您需要使用子查询。
你可以试试这个。
;WITH CTE AS
(
select
OrderHeader.ID,
sum(OrderLine.NetPrice) as OrderLineNetPrice,
sum(OrderLine.GrossPrice) as OrderLineGrossPrice,
sum(
case when PaymentOption_ID = 8
then Payment.Amount
else 0
end
) as TotalCashAmount
from OrderHeader
inner join Payment on Payment.OrderHeader_ID = OrderHeader.ID
inner join OrderLine on OrderLine.OrderHeader_ID = OrderHeader.ID
group by OrderHeader.ID
)
SELECT *,
((OrderLineGrossPrice - OrderLineNetPrice)/OrderLineGrossPrice) * TotalCashAmount as VatableCash
FROM CTE
谢谢!需要一些时间来测试。将很快回复你! –
爱交申请!每当你想要一些方便的额外列时使用它。
select
OrderHeader.ID,
sum(OrderLine.NetPrice) as OrderLineNetPrice,
sum(OrderLine.GrossPrice) as OrderLineGrossPrice,
TotalCashAmount,
((OrderLineGrossPrice - OrderLineNetPrice)/OrderLineGrossPrice) * TotalCashAmount as VatableCash
from OrderHeader
inner join Payment on Payment.OrderHeader_ID = OrderHeader.ID
inner join OrderLine on OrderLine.OrderHeader_ID = OrderHeader.ID
cross apply (select sum(
case when PaymentOption_ID = 8
then Payment.Amount
else 0
end
)) as subquery(TotalCashAmount)
group by OrderHeader.ID
小问题是我认为我也必须使用'OrderLineNetPrice'和'OrderLineGrossPrice'来完成它,如果是这种情况,我正考虑使用下面的子查询解决方案。我现在不能测试,所以我会尽可能地检查它们。谢谢! –
如果需要,您可以将这些添加到其他交叉应用: 交叉应用(选择总和(OrderLine.NetPrice)作为OrderLineNetPrice, sum(OrderLine.GrossPrice)作为OrderLineGrossPrice)作为sumsquery –
计算vatable现金时,你可以重复用于orderlinenetprice,orderlinegrossprice和totalcashamount计算,移动的vatable现金计算外查询,或者使用一个CTE(这实际上是一回事)。 –