SQL Group By 问题


QQͼƬ20160802133055.png

如图,需要下面这种效果
16  2016-08-02  山景访客平日套餐 数量2
86  2016-08-02  799/999套餐        数量1
 
不同的BillCode,相同的ItemCode  不管有几个,只显示一个,但数量显示实际有几个。
相同的BillCode,相同的ItemCode  不管有几个,只显示一个,并且数量也是1个。 
 
 
已邀请:

木魚 - 伪文艺半愤青无党派人士

赞同来自: 木魚他哥

DECLARE @t TABLE (billCode VARCHAR(50), ItemCode INT);
INSERT INTO @t (billCode, ItemCode)
VALUES ('Z160802001', 16);
INSERT INTO @t (billCode, ItemCode)
VALUES ('Z160802002', 86);
INSERT INTO @t (billCode, ItemCode)
VALUES ('Z160802002', 86);
INSERT INTO @t (billCode, ItemCode)
VALUES ('Z160802003', 16);

SELECT TEMP.ItemCode, COUNT(*) [Count] FROM (SELECT billCode,ItemCode FROM @t GROUP BY billCode, ItemCode) TEMP GROUP BY TEMP.ItemCode

先按ItemCode和BillCode分组,然后再针对ItemCode分组统计数目即可(也就是对BillCode和ItemCode先排重) 。
最后结果的名称通过一个连接即可查询。


 

警告:追问别人请评论 回复回答 直接回答提问才可以