0

我有一个要求,即仅使用 SQL 查询来显示数据。表名:EMP_DEPT

    DEPARTMENT  |   EMPLOYEE    |   SALARY
    DEPT1       |   ABC         |   20000
    DEPT1       |   MNO         |   30000
    DEPT1       |   XYZ         |   25000
    DEPT2       |   DEF         |   42000
    DEPT2       |   GHI         |   35000
    DEPT3       |   JKL         |   36000

以及我期望的结果如下

    DEPARTMENT  |   EMPLOYEE    |   SALARY
    DEPT1       |   ABC         |   20000
                |   MNO         |   30000
                |   XYZ         |   25000
    DEPT2       |   DEF         |   42000
                |   GHI         |   35000
    DEPT3       |   JKL         |   36000

像这样打印的选择查询将是什么。使用 MSSQL 作为数据库

提前致谢。

4

2 回答 2

3

试试这个。您可以使用''NULL随心所欲。也许您想按分区排序EMPLOYEE

SELECT 
   CASE WHEN rn = 1 THEN DEPARTMENT ELSE '' END  as DEPARTMENT,
   EMPLOYEE,
   SALARY
FROM
(
   SELECT *, ROW_NUMBER() OVER (PARTITION BY DEPARTMENT ORDER BY (SELECT 1)) rn
   FROM EMP_DEPT
) A
于 2013-01-08T15:09:10.380 回答
1

您可以使用ROW_NUMBER()标识第一次出现的部门,并使用CASE语句显示部门名称或空白。

SELECT
    CASE
        WHEN ROW_NUMBER() OVER(PARTITION BY DEPARTMENT ORDER BY EMPLOYEE) = 1
        THEN DEPARTMENT
        ELSE ''
    END AS DEPARTMENT,
    EMPLOYEE,
    SALARY
FROM EMP_DEPT
ORDER BY EMP_DEPT.DEPARTMENT, EMPLOYEE
于 2013-01-08T15:13:32.740 回答