选择每天缺勤的员工数

时间:2011-04-23 21:35:02

标签: sql sql-server tsql select group-by

好吧,所以我可以说我有三张桌子,如下:
员工( ID ,姓名)
会话( ID ,starts_at,ends_at,day)
缺席( ID ,employeeID,sessionID)

假设每天有多个会话 是否可以选择在会话表中为每个不同日期的会话计算员工缺勤情况,并按如下方式对其进行分组:

--------------------------------
| Name |2011-01-15| 2011-01-16 | 
|      |          |            |
|john  |  2       |   0        |
|dave  |  4       |    1       |

(列数(天)取决于会话表上的天数,假设我只想要上一周或当前周的天数
谢谢。

3 个答案:

答案 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