СУММА в случае выражения SQL Сервер - PullRequest
0 голосов
/ 06 апреля 2020

Я работаю над этим запросом:

SELECT
       [D_INV_DATE_ID]
      ,[INVOICE_NO]
      ,[CUSTOMER_ID]
      ,[DOCUMENT_STATUS]
      ,[Total_Charge]
      ,[OPEN_CHARGE]
      ,[DSS_UPDATE_TIME]
      ,Case 
         when Total_Charge < 20 then 'less than 20'
         when Total_Charge > 20 and Total_Charge <= 50 then '20-50'
         when Total_Charge > 50 and Total_Charge <= 100 then '50-100'
         when Total_Charge > 100 then '100+'
      End as SortedBySum
  FROM [TEST].[angel].[inv3]

Мне нужно СУММИТЬ все операторы когда просто так, как они сейчас находятся по группам, поэтому первым должно быть все суммы ниже 20 до Подводя итог.

1 Ответ

0 голосов
/ 06 апреля 2020

Если я угадаю правильно, я думаю, что следующие логики c помогут-

SELECT 
[D_INV_DATE_ID],[INVOICE_NO],[CUSTOMER_ID],[DOCUMENT_STATUS],[Total_Charge],
[OPEN_CHARGE],[DSS_UPDATE_TIME],
SUM(CASE WHEN Total_Charge <= 20 THEN Total_Charge ELSE 0 END) [sum_below_equal_20],
SUM(CASE WHEN Total_Charge > 20 and Total_Charge <= 50 THEN Total_Charge ELSE 0 END) [sum_above_20_below_50],
SUM(CASE WHEN Total_Charge > 50 and Total_Charge <= 100 THEN Total_Charge ELSE 0 END) [sum_above_50_below_100],
SUM(CASE WHEN Total_Charge > 100 THEN Total_Charge ELSE 0 END) [sum_100_above]
FROM [TEST].[angel].[inv3]
GROUP BY
[D_INV_DATE_ID],[INVOICE_NO],[CUSTOMER_ID],[DOCUMENT_STATUS],[Total_Charge],
[OPEN_CHARGE],[DSS_UPDATE_TIME]
...