簡體   English   中英

如何 select 多列並按一列分組

[英]How to select multiple columns and group by one column

我想根據number列對 C.AMOUNT 求和。 例如相同4個數字中的number列,那么我想根據數字列中的相同number對列C.AMOUNT求和,並在FINAL_AMOUNT列中顯示求和列

在此處輸入圖像描述

    SELECT A.NUMBER, 
       B.AGE, 
       C.PRODUCT_NAME, 
       SUM(C.AMOUNT) AS FINAL_AMOUNT, 
       (CASE
            WHEN C.PRODUCT_NAME LIKE '%D%'
            THEN 'Y'
            ELSE 'N'
        END) AS D, 
       (CASE
            WHEN C.PRODUCT_NAME LIKE '%E%'
            THEN 'Y'
            ELSE 'N'
        END) AS E, 
       (CASE
            WHEN C.PRODUCT_NAME LIKE '%F%'
            THEN 'Y'
            ELSE 'N'
        END) AS F, 
       (CASE
            WHEN C.PRODUCT_NAME LIKE '%G%'
                 OR C.PRODUCT_NAME LIKE '%H%'
                 OR C.PRODUCT_NAME LIKE '%J%'
            THEN 'Y'
            ELSE 'N'
        END) AS J
FROM [A].[DBO].[A]
     LEFT JOIN [B].[DBO].[B] B ON A.NUMBER = B.NUMBER
     LEFT JOIN [C].[DBO].[C] C ON A.NUMBER = C.NUMBER
WHERE B.REPORT_DATE = '20200728'
GROUP BY A.NUMBER;

那是我使用的查詢,但我發現這樣的錯誤:

MSG 8120,16,State 1,第1行1列'B.Dbo.b'在Z999938282F040404071859941E18F18F16EFCF421111818列表中均不包括在Z9999382F042F018上列表。

看起來你想要一個 window 總和而不是聚合。

也就是說,替換:

SUM(C.amount) as FINAL_AMOUNT

和:

SUM(C.amount) OVER(PARTITION BY A.NUMBER) as FINAL_AMOUNT

因此,您需要從查詢中刪除GROUP BY子句。

暫無
暫無

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

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