与使用Group BY,ORDER BY子句的SQL Server SELECT查询中的列相同

时间:2018-09-22 07:12:42

标签: sql sql-server

我有一种情况,我必须在输出中获得一列,两次。

查询示例:

SELECT 
    EMP_JOIN_MONTH AS EMP_JOIN_MONTH_TEST, 
    EMP_JOIN_MONTH AS EMP_JOIN_MONTH_TEST 
FROM
    EMPLOYEE 
WHERE 
    EMP_ID IN (12345) 
GROUP BY 
    EMP_JOIN_MONTH, EMP_JOIN_MONTH
ORDER BY 
    EMP_JOIN_MONTH_TEST ASC 
    OFFSET 0 ROWS FETCH NEXT 1000 ROWS ONLY;

在MySQL中,我得到的列比预期的多了两倍。但是不在Microsoft SQL Server中。

我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要为所有单独的列使用不同的别名:

create table EMPLOYEE( EMP_ID int, EMP_JOIN_MONTH varchar(20));
insert into EMPLOYEE values(12345,'March');
insert into EMPLOYEE values(12345,'March');



SELECT 
    EMP_JOIN_MONTH AS EMP_JOIN_MONTH_TEST1, 
    EMP_JOIN_MONTH AS EMP_JOIN_MONTH_TEST2 
FROM
    EMPLOYEE 
WHERE 
    EMP_ID IN (12345) 
GROUP BY 
    EMP_JOIN_MONTH
ORDER BY 
    EMP_JOIN_MONTH_TEST1 ASC 
    OFFSET 0 ROWS FETCH NEXT 1000 ROWS ONLY;

EMP_JOIN_MONTH_TEST1    EMP_JOIN_MONTH_TEST2
--------------------    --------------------
       March                  March

Rextester Demo