sql选择每个团队每天的信息
我需要从数据库中选择一些信息,每天和每个团队。我想看看每个团队每天购买多少物品。例如,如果在2012年11月21日购买了6件物品,我希望我的结果显示:第一组购买了3件物品,第二组购买了2件物品,最后一组购买了1件物品。我可以通过以下方式获得一个团队的信息:sql选择每个团队每天的信息,sql,Sql,我需要从数据库中选择一些信息,每天和每个团队。我想看看每个团队每天购买多少物品。例如,如果在2012年11月21日购买了6件物品,我希望我的结果显示:第一组购买了3件物品,第二组购买了2件物品,最后一组购买了1件物品。我可以通过以下方式获得一个团队的信息: select count(CONVERT(date, getdate())) as Team1 from items where team = 1 group by CONVERT(date, getdate()) 但我不知道如何才能得到我
select count(CONVERT(date, getdate())) as Team1
from items
where team = 1
group by CONVERT(date, getdate())
但我不知道如何才能得到我需要的所有球队的信息
编辑
我需要这样的结果:
Date |Team1 | Team2 | Team3
2012-11-21|2 items | 3 items | 0 items
我的表结构是这样的:
日期、产品、价格、团队
您需要按照团队和日期进行分组
SELECT datecol, team, COUNT(*)
FROM items
GROUP BY datecol, team
基于您更新的需求,并且不知道您的DBMS是什么:
SELECT a.datecol AS 'Date',
(SELECT COUNT(*) FROM items WHERE datecol = a.datecol AND team = '1') AS 'Team1',
(SELECT COUNT(*) FROM items WHERE datecol = a.datecol AND team = '2') AS 'Team2',
(SELECT COUNT(*) FROM items WHERE datecol = a.datecol AND team = '3') AS 'Team3'
FROM items a
GROUP BY a.datecol
这里您需要的是
PIVOT
您的表格,如下所示:
SELECT
Date,
SUM(CASE WHEN team = 'team1' THEN 1 ELSE 0 END) 'team1',
SUM(CASE WHEN team = 'team2' THEN 1 ELSE 0 END) 'team2',
SUM(CASE WHEN team = 'team3' THEN 1 ELSE 0 END) 'team3'
FROM Tablename
GROUP BY date;
如果您想得到足够的答案,您应该始终附加表结构和数据库系统。结果中有日期吗?您希望日期作为参数?是否有或将有更多的团队或只有3个团队?