我有以下查询。
执行后我的结果就是这个。
但问题是在这里发票号'I261001001S000371'有2条记录。我希望显示为1条记录。发票现金金额和支票金额的手段应显示在一行中。
有什么想法吗?
答案 0 :(得分:1)
将您的选择语句更改为SUM
Cash
和Cheque
以及Credit
列GROUP BY InvoiceNo, NetAmount, Settle
这样,每张发票都会显示您在Case语句中指定的每个列的总数,并将其全部放在一行中
答案 1 :(得分:1)
尝试此查询:使用汇总功能汇总所有发票号码的所有现金。我不确定和解。您可以使用聚合,IF需要。
SELECT InVoiceNo, sum(cash), sum(cheque),
sum(credit), NetAmount, Settle
from
(--Your select query to get result as specified in question) as a
group by InVoiceNo, NetAmount, Settle
答案 2 :(得分:1)
您可以使用带有CTE的Over
-clause按InvoiceNo
总结它们:
WITH CTE AS
(
SELECT InvoiceNo, NetAmount, Settle, Credit,
RN = ROW_NUMBER() OVER ( PARTITION BY InvoiceNo ORDER BY InvoiceNo ),
Cash = SUM(CASH) OVER ( PARTITION BY InvoiceNo ),
Cheque = SUM(Cheque) OVER ( PARTITION BY InvoiceNo ),
Credit = SUM(Credit) OVER ( PARTITION BY InvoiceNo )
FROM dbo.InvoiceHeader -- ... and other tables ...
)
SELECT InvoiceNo, NetAmount, Settle, Cash, Cheque, Credit
FROM CTE WHERE RN = 1