Order by和group by的SQL错误

时间:2016-03-29 01:20:28

标签: sql-server

这个SQL在mysql中工作但我无法在SQL Server中执行此操作。

SELECT COUNT(*) 
FROM (
    SELECT 
        COUNT(postnID) AS Total, 
        postnID, 
        Unit_DBM, 
        job_type, 
        level, 
        internal_plantilla, 
        INCID, 
        ITEM_NO_2005, 
        position_type, 
        position_status 
    FROM paf_plantilla 
    GROUP BY 
        internal_plantilla, 
        level, 
        INCID, 
        postnID, 
        position_status 
    ORDER BY 
        internal_plantilla, 
        postnID
) AS num

错误:

  

ORDER BY子句在视图,内联函数中派生无效   表,子查询和公用表表达式,除非TOP,OFFSET   或者也指定了FOR XML。

2 个答案:

答案 0 :(得分:2)

这在任何非MySQL的SQL实现中都不起作用。

  • 汇总查询中的非聚合必须为grouped by
  • 在子查询中没有ORDER BY
  • TOP很可能不会按照您的想法行事(可能不会出错,但它也不对)

由于第一点,很难弄清楚正确的查询 - 某种其他事物组合的计数。如果你解释我可以更新答案的内容。

答案 1 :(得分:0)

您无法选择不在group by子句中的列。由于您正在执行count,因此您实际上不需要order by子句。试试以下内容:

SELECT COUNT(*) 
FROM (
    SELECT 
        COUNT(postnID) AS Total, 
        postnID, 
        Unit_DBM, 
        job_type, 
        level, 
        internal_plantilla, 
        INCID, 
        ITEM_NO_2005, 
        position_type, 
        position_status 
    FROM paf_plantilla 
    GROUP BY 
        postnID, 
        Unit_DBM, 
        job_type, 
        level, 
        internal_plantilla, 
        INCID, 
        ITEM_NO_2005, 
        position_type, 
        position_status 
) AS num