mysql - SQL查询将一列的组结果带入多个列

标签 mysql sql

尝试进行生成这种结果的查询

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/

相关文章:

SQL Server 中 7 天滚动平均值的 SQL 查询

sql - 我如何在postgresql中找到列中的最大值?

php - 从两个表中各选择一条记录。通过将另一个值与新表匹配来更新一个值

mysql - 查找从具有 group by 函数的 sql 查询生成的列的平均值

php - 迁移 MediaWiki 后如何更新所有外部链接

sql - Firebird 在 where 和 order by 子句上的表现

SQL Cast 古怪之处

sql - 为什么连接到 OLEDB 会出现连接错误

PHP MySQL & AJAX 搜索过滤时间延迟

mysql - 是否可以创建 mysql 查询(考虑外来列按列排序)