假设数据集包含3列和n行
{Table - ProductSales
Customer Name Transaction no Productlist
A T1 P1
A T2 P2
B T3 P3
C T4 P4
D T5 P5
D T6 P6
}
{Consider the sales table : Sales
TransNo Amount of Sales Quantity
T1 $100 4
T2 $200 2
T3 $50 1
T4 $500 10
T5 $600 3
T6 $700 4}
现在我想要检索具有多个事务的客户记录 记录。预期输出:
A T1 P1
A T2 P2
D T5 P5
D T6 P6
&安培;我需要获得另一套整体销售报告:预期输出
{Customer NumberofTransaction totalsales totalquantitypurchased
A 2 $300 6
B 1 $50 1
C 1 $500 10
D 2 $1300 7}
由于
答案 0 :(得分:1)
大多数SQL版本(包括SQL Server)都支持ANSI标准窗口函数。有了这些,您可以这样做:
select CustomerName, TransactionNum, Productlist
from (select ps.*, count(*) over (partition by CustomerName) as cnt
from ProductSales ps
) ps
where cnt > 1;
如果您的SQL版本不支持窗口函数,您可以使用aggregation和join / in / exists子句执行类似的操作。
答案 1 :(得分:1)
您的第一部分请参阅Gordon的回复和第二部分
select CustomerName, COUNT(sl.TransactionNo), SUM(AmountOfSales), SUM(Quantity)
from ProductSales ps
JOIN Sales sl
ON ps.TransactionNo = sl.TransactionNo
GROUP BY CustomerName