簡體   English   中英

總和然后分組?

[英]Sum of sums then Group by?

無法弄清楚如何制定此公式,然后按年份獲得答案。

Select
((Select Sum(#FinancialView2.CONVERTED_AMOUNT)*-1
FROM   #FinancialView2
WHERE  #FinancialView2."SECTION_NUMBER"=300 
AND #FinancialView2.BU_CODE in ('10','11','W0')
GROUP BY FinancialYear) 
+
(Select Sum(#FinancialView2.CONVERTED_AMOUNT)*-1
FROM   #FinancialView2
WHERE  #FinancialView2."SECTION_NUMBER"=400 
AND #FinancialView2.BU_CODE in ('10','11','W0')
AND #FinancialView2.DeptCode not in ('403','413')))
/
((Select Sum(#FinancialView2.CONVERTED_AMOUNT)*-1
FROM   #FinancialView2
WHERE  #FinancialView2."LINE_NUMBER"=110 
AND #FinancialView2.BU_CODE in ('10','11','W0')) 
+
(Select Sum(#FinancialView2.CONVERTED_AMOUNT)*-1
FROM   #FinancialView2
WHERE  #FinancialView2."LINE_NUMBER"=115 
AND #FinancialView2.BU_CODE in ('10','11','W0'))
+
(Select Sum(#FinancialView2.CONVERTED_AMOUNT)*-1
FROM   #FinancialView2
WHERE  #FinancialView2."LINE_NUMBER"=120
AND #FinancialView2.BU_CODE in ('10','11','W0')) 
+
(Select ISNULL(Sum(#FinancialView2.CONVERTED_AMOUNT)*-1,0)
FROM   #FinancialView2
WHERE  #FinancialView2."LINE_NUMBER"=125
AND #FinancialView2.BU_CODE in ('10','11','W0')))*-1

我在這里嘗試了“分組依據”,但由於明顯的原因而無法使用

有什么想法嗎?

好像您需要一些條件匯總(仔細檢查我是否正確翻譯了條件):

Select FinancialYear,
 (
   Sum(CASE WHEN #FinancialView2."SECTION_NUMBER"=300
            THEN #FinancialView2.CONVERTED_AMOUNT ELSE 0 END)*-1
+  Sum(CASE WHEN #FinancialView2."SECTION_NUMBER"=400 AND #FinancialView2.DeptCode not in ('403','413')
            THEN #FinancialView2.CONVERTED_AMOUNT ELSE 0 END)*-1
  )
/
 (
   Sum(CASE WHEN #FinancialView2."SECTION_NUMBER"=110
            THEN #FinancialView2.CONVERTED_AMOUNT ELSE 0 END)*-1
+  Sum(CASE WHEN #FinancialView2."SECTION_NUMBER"=115
            THEN #FinancialView2.CONVERTED_AMOUNT ELSE 0 END)*-1
+  Sum(CASE WHEN #FinancialView2."SECTION_NUMBER"=120
            THEN #FinancialView2.CONVERTED_AMOUNT ELSE 0 END)*-1
+  Sum(CASE WHEN #FinancialView2."SECTION_NUMBER"=125
            THEN #FinancialView2.CONVERTED_AMOUNT ELSE 0 END)*-1
 )
WHERE #FinancialView2.BU_CODE in ('10','11','W0')
GROUP BY FinancialYear

可以進一步簡化為:

Select FinancialYear,
 (
   Sum(CASE WHEN #FinancialView2."SECTION_NUMBER"=300
              OR (#FinancialView2."SECTION_NUMBER"=400 AND #FinancialView2.DeptCode not in ('403','413'))
            THEN #FinancialView2.CONVERTED_AMOUNT ELSE 0 END)*-1
 )
/
 (
   Sum(CASE WHEN #FinancialView2."SECTION_NUMBER" IN (110, 115, 120, 125)
            THEN #FinancialView2.CONVERTED_AMOUNT ELSE 0 END)*-1
 )
WHERE #FinancialView2.BU_CODE in ('10','11','W0')
GROUP BY FinancialYear

最后, col*-1-col

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM