假设每天有多个会话 是否可以选择在会话表中为每个不同日期的会话计算员工缺勤情况,并按如下方式对其进行分组:
--------------------------------
| Name |2011-01-15| 2011-01-16 |
| | | |
|john | 2 | 0 |
|dave | 4 | 1 |
(列数(天)取决于会话表上的天数,假设我只想要上一周或当前周的天数
谢谢。
答案 0 :(得分:1)
您应该使用PIVOT
声明。在那里:
SELECT Name, [2011-01-15], [2011-01-16]
FROM
(SELECT [Day],Name
FROM [Absences] A left join
[Sessions] S on A.sessionID = S.ID
GROUP BY [Day],Name) AS SourceTable
PIVOT
(
COUNT([Day])
FOR [Day] IN ([2011-01-15], [2011-01-16])
) AS PivotTable;
答案 1 :(得分:0)
查找数据透视表。在某些RDBMS上,这是内置的。
答案 2 :(得分:0)
我在想你正在谈论MySQL而你想做一个数据透视表。转到ArtfulSoftware的MySQL站点并查看数据透视表教程: http://www.artfulsoftware.com/infotree/queries.php