【发布时间】:2020-10-16 11:36:13
【问题描述】:
我有以下疑问:
select
sum(case when c.BILLINGCLASSIFICATION = 'ACT Payment' AND c.TransType2 = 'Customer' THEN convert(float,c.Balance) ELSE 0 END) AS [FTI-ACT Payment],
sum(case when c.BILLINGCLASSIFICATION = 'Bulk' AND c.TransType2 = 'Customer' THEN convert(float,c.Balance) ELSE 0 END) As [FTI-Bulk],
sum(case when c.BILLINGCLASSIFICATION = 'Dedicated' AND c.TransType2 = 'Customer' THEN convert(float,c.Balance) ELSE 0 END) As [FTI-DED],
sum(case when c.BILLINGCLASSIFICATION = 'FMS' AND c.TransType2 = 'Customer' THEN convert(float,c.Balance) ELSE 0 END) As [FTI-FMS],
sum(case when c.BILLINGCLASSIFICATION = 'Managed Service' AND c.TransType2 = 'Customer' THEN convert(float,c.Balance) ELSE 0 END) As [FTI-MS],
sum(case when c.BILLINGCLASSIFICATION not in ('ACT Payment','Bulk','Dedicated','FMS','Managed Service') AND c.TransType2 = 'Customer' THEN convert(float,c.Balance) ELSE 0 END) As [FTI-Other],
sum(case when c.BILLINGCLASSIFICATION not in ('ACT Payment','Corrected') and c.Balance>0 AND c.TransType2 = 'Customer' THEN convert(float,c.Balance) ELSE 0 END) As [FTI-DR],
sum(case when c.BILLINGCLASSIFICATION not in ('ACT Payment','Cancelling') and c.Balance < 0 AND c.TransType2 = 'Customer' THEN convert(float,c.Balance) ELSE 0 END) As [FTI-CR],
sum(case when c.VOUCHER like 'ARP%' and c.LedgerJournalACType = 'Bank' and c.TransType2 = 'Payment' THEN convert(float,c.Balance) ELSE 0 END) As [New Payments]
from [AX2cTest].[dbo].[CUSTTRANS_V] c
这个输出:
FTI-ACT Payment FTI-Bulk FTI-DED FTI-FMS FTI-MS FTI-Other FTI-DR FTI-CR New Payments
-122995.14 114521.67 728830.9 2793.46 53137.07 3000 902352.58 -69.48 0
我需要添加一个余额字段来简单地添加所有这些字段。不过,这只是一个相当长的查询的示例。我试图避免将每个冗长的语句添加到 (col1 + col2) 格式中,这似乎会减慢查询速度,并且很快就会查询生产环境。这是我唯一的选择吗?谢谢
【问题讨论】:
标签: sql sql-server tsql select pivot