我有一张销售信息表,并且有兴趣按客户分组,并返回几列的总和,计数,最大值。有什么想法。
我检查了所有“选择”列都包含在Group By语句中,而不是返回分组和汇总值,返回了详细信息。
我尝试了一些明确的命名,但这没有帮助。
SELECT
customerID AS CUST,
COUNT([InvoiceID]) AS Count_Invoice,
SUM([Income]) AS Total_Income,
SUM([inc2015]) AS Tot_2015_Income,
SUM([inc2016]) AS Tot_2016_Income,
MAX([prodA]) AS prod_A,
FROM [table_a]
GROUP BY
customerID, InvoiceID,Income,inc2015, inc2016, prodA
CUST有多行,即CUST 1、2等应该有一行。...应该这样说...
---------------------------------------------
CUST Count_Invoice Total_Income Tot_2015_Income Tot_2016_Income prod_A
1 2 600 300 300 2
BUT IT IS RETURNING THIS
======================================
CUST Count_Invoice Total_Income Tot_2015_Income Tot_2016_Income prod_A
1 1 300 300 0 1
1 1 300 0 300 1
2 1 300 0 300 1
2 1 500 0 500 0
3 2 800 0 800 0
3 1 300 0 300 1
答案 0 :(得分:0)
从对预期输出的描述中,您应该仅按客户进行汇总:
SELECT
customerID A CUST,
COUNT([InvoiceID]) AS Count_Invoice,
SUM([Income]) AS Total_Income,
SUM([inc2015]) AS Tot_2015_Income,
SUM([inc2016]) AS Tot_2016_Income,
MAX([prodA]) AS prod_A
FROM [table_a]
GROUP BY
customerID;
答案 1 :(得分:0)
您不需要另外group by
列,因为它们已经通过count
,min
,max
或sum
进行汇总。
所以您可以尝试
SELECT customerID as CUST
,count([InvoiceID]) as Count_Invoice
,sum([Income]) as Total_Income
,sum([inc2015]) as Tot_2015_Income
,sum([inc2016]) as Tot_2016_Income
,max([prodA]) as prod_A --- here you are taking Max but in output it seems like sum
FROM [table_a]
Group By customerID
注意:对于列prod_A
,您使用的是max
,它给出了1
,但结果是它显示的2
实际上是sum
或{{1 }}。请检查。
有关更多信息,您可能会发现此链接Group by。