簡體   English   中英

嘗試將 INNER JOIN 和 GROUP BY SQL 與 SUM 函數一起使用,但不起作用

[英]Trying to use INNER JOIN and GROUP BY SQL with SUM Function, Not Working

我不明白這個問題,想知道是否有人可以幫助我解決這個問題。

我有 2 個名為RES_DATAINV_DATA

RES_DATA包含我的客戶如下

CUSTOMER ID | NAME

1, Robert
2, John
3, Peter

INV_DATA包含他們的INV_DATA如下

INVOICE ID | CUSTOMER ID | AMOUNT

100, 1, £49.95
200, 1, £105.95
300, 2, £400.00
400, 3, £150.00
500, 1, £25.00

我正在嘗試編寫一個SELECT語句,它會給我如下結果。

CUSTOMER ID | NAME | TOTAL AMOUNT

1, Robert, £180.90
2, John, £400.00
3, Peter, £150.00

我想我需要 2 個內部聯接以某種方式添加按客戶表分組的發票表的表和總和值,但老實說,我認為我遺漏了一些東西。 甚至無法接近我需要的結果。

這應該有效。

SELECT a.[CUSTOMER ID], a.[NAME], SUM(b.[AMOUNT]) AS [TOTAL AMOUNT]
FROM RES_DATA a INNER JOIN INV_DATA b
ON a.[CUSTOMER ID]=b.[CUSTOMER ID]
GROUP BY a.[CUSTOMER ID], a.[NAME]

我用 SQL Fiddle 針對 SQL Server 2008 對其進行了測試: http ://sqlfiddle.com/#!3/1cad5/1

基本上,這里發生了什么的是,由於加入,你得到在同一行的“左”(即從RES_DATA表)上的“正確”(即每一行INV_DATA表)具有相同的[CUSTOMER ID]值。 當您僅按左側的列分組,然后僅對右側的[AMOUNT]列求和時,它會保持左側的一行完整,並匯總右側的匹配值.

有兩種方法可以做到...

通過...分組

SELECT RES.[CUSTOMER ID], RES,NAME, SUM(INV.AMOUNT) AS [TOTAL AMOUNT]
FROM RES_DATA RES
JOIN INV_DATA INV ON RES.[CUSTOMER ID] INV.[CUSTOMER ID]
GROUP BY RES.[CUSTOMER ID], RES,NAME

超過

SELECT RES.[CUSTOMER ID], RES,NAME, 
       SUM(INV.AMOUNT) OVER (PARTITION RES.[CUSTOMER ID]) AS [TOTAL AMOUNT]
FROM RES_DATA RES
JOIN INV_DATA INV ON RES.[CUSTOMER ID] INV.[CUSTOMER ID]

使用子查詢

SELECT * FROM RES_DATA inner join (SELECT [CUSTOMER ID], sum([TOTAL AMOUNT]) FROM INV_DATA group by [CUSTOMER ID]) T on RES_DATA.[CUSTOMER ID] = t.[CUSTOMER ID]

如果您需要檢索除 group by 列之外的更多列,則可以考慮以下查詢。 檢查一次它是否表現良好。

SELECT 
a.[CUSTOMER ID], 
a.[NAME], 
(select SUM(b.[AMOUNT]) from INV_DATA b
where b.[CUSTOMER ID] = a.[CUSTOMER ID]
GROUP BY b.[CUSTOMER ID]) AS [TOTAL AMOUNT]
FROM RES_DATA a
SELECT RES.[CUSTOMER ID], RES.NAME, SUM(INV.AMOUNT) AS [TOTAL AMOUNT]
FROM RES_DATA
JOIN INV_DATA ON RES.[CUSTOMER ID]=INV.[CUSTOMER ID]
GROUP BY RES.[CUSTOMER ID], RES.NAME

暫無
暫無

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

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