0

我需要每天和每个团队从数据库中选择一些信息。我想看看每个团队每天购买了多少物品。例如,如果在 2012 年 11 月 21 日购买了 6 件商品,我希望我的结果显示:团队 1 购买了 3 件商品,团队 2 - 2 件商品,最后一个团队购买了 1 件商品。我可以使用以下方法获取一个团队的信息:

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 

我的表结构是这样的:Date, Product, Price, Team.

4

2 回答 2

0

你在这里需要的是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;
于 2012-11-21T15:32:14.733 回答
0

你需要GROUP BY组队和约会。

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
于 2012-11-21T15:23:38.157 回答