【问题标题】:How to Group same field under one field using sql query如何使用sql查询将同一字段分组到一个字段下
【发布时间】:2013-02-01 12:08:14
【问题描述】:

我有下表的数据

emp_no emp_name login HOD_code 级别 E43057 Ankita Barde 9:45 P00212 直接 E33995 Rakesh Sharma 8:15 P00212 直接 E31446 阿米特辛格 10:45 P00212 直接 E44920 Shweta Salve 9:38 E33995 间接 E39787 Anita Shenoy 9:15 E31446 间接 E37731 拉梅什舒克拉 9:10 E31446 间接 E43455 Manish Shukla 11:01 E33995 间接 E43130 Lubna Shaikh 9:39 E33995 间接

在上表中,我有一个 HOD 代码 (P00212) 优于所有,因此在 P00212 下映射的员工在 LEVEL 列中被指定为直接员工,所有其他人都间接到 P00212。但是这个间接雇员被映射在直接雇员下 例如:P00212 是 Rakesh Sharma (E33995) 的 HOD,E33995 是其他 3 名员工的 HOD,即 Shweta(E44920)、E43455、E43130。所以我想以这样的方式编写一个查询,输出如下所示

输出:

emp_no emp_name login HOD_NO 级别 E43057 Ankita Barde 9:45 P00212 直接 E33995 Rakesh Sharma 8:15 P00212 直接 E43455 Manish Shukla 11:01 E33995 间接 E43130 Lubna Shaikh 9:39 E33995 间接 E44920 Shweta Salve 9:38 E33995 间接 E31446 阿米特辛格 10:45 P00212 直接 E39787 Anita Shenoy 9:15 E31446 间接 E37731 拉梅什舒克拉 9:10 E31446 间接

我该怎么做?

【问题讨论】:

    标签: mysql sql group-by


    【解决方案1】:

    SQLFiddle Example

    select * from t
    order by CASE WHEN HOD_CODE='P00212' THEN EMP_NO ELSE HOD_CODE END,
             CASE WHEN HOD_CODE='P00212' THEN 0 ELSE 1 END
    

    【讨论】:

    • 谢谢它的工作......我得到了我的解决方案......你能解释一下它是如何工作的吗!!!非常感谢:)
    • @shweta:首先我们按 HOD_CODE 订购,但对于 P00212,我们得到的不是 HOD_CODE 而是 emp_no。因此,我们根据需要对记录进行分组。在第二个排序表达式中,我们对组内的记录进行排序,如果是 P00212,我们将其放在顶部。
    【解决方案2】:

    您可以尝试以下方法:

    select 
        *, 
        case 
            when (HOD_CODE='P00212') 
            then emp_no 
            else HOD_code 
        end as Parent
    from Table
    Order by Parent, Emp_No
    

    SQL Fiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      相关资源
      最近更新 更多