尝试进行生成这种结果的查询
EmpId, EmpSickLeave,EmpCasualLeave, EmpAnnualLeave, TotalLeave
1, 1, 0, 0 1
2, 0, 0, 2 2
3, 0, 1, 0 1
4, 0, 1, 0 1
5, 1, 0, 0 1
我有两张 table
表 EmpLeave::包含一列 EmpId、Date、EmpLeaveTypeID
表 EmpLeaveType::包括 EmpLeaveTypeID 和 LeaveName
表格中的数据
EmpLeaveType Table
EmpLeaveTypeID , LeaveName
1, Sick Leave
2, Annual
3, Casual
EmpLeave Table
column EmpId, Date, EmpLeaveTypeID
1, 2015-07-01, 1
3, 2015-07-02, 2
5, 2015-07-04, 1
4, 2015-07-04, 2
2, 2015-07-05, 2
2, 2015-07-07, 2
我正在拉扯我的头发,无法带来这种结果。这可能吗?
EEmpId, EmpSickLeave,EmpCasualLeave, EmpAnnualLeave, TotalLeave
1, 1, 0, 0 1
2, 0, 0, 2 2
3, 0, 1, 0 1
4, 0, 1, 0 1
5, 1, 0, 0 1
我试过这个错误的东西!
SELECT * count(EmpLeaveTypeID) FROM `EmpLeaveType`
WHERE SwitchDate Between '2015-07-01' AND '2015-07-28'
group by EmpLeaveType, EmpId
最佳答案
请尝试下面的 SELECT 查询。它没有考虑有一天可能会更改休假类型。 SQL fiddle 链接 http://sqlfiddle.com/#!9/0fd13/2 该查询只是执行条件聚合来计算每个员工的休假时间。
SELECT
EmpId,
SUM(CASE WHEN EmpLeaveTypeID=1 THEN 1 ELSE 0 END) as EmpSickLeave,
SUM(CASE WHEN EmpLeaveTypeID=2 THEN 1 ELSE 0 END) as EmpCasualLeave,
SUM(CASE WHEN EmpLeaveTypeID=3 THEN 1 ELSE 0 END) as EmpAnnualLeave,
COUNT(1) as TotalLeave
FROM `EmpLeave`
WHERE Date Between '2015-07-01' AND '2015-07-28'
group by EmpId
关于mysql - SQL查询将一列的组结果带入多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31691704/