SQL Server查询:关键字“组”附近的语法不正确

时间:2015-06-10 10:24:24

标签: sql sql-server sql-server-2008

我有两张表TableATableB。他们在TableA.refID = TableB.SomeID上加入了联接,然后是其他一些列(TableA.timeTableB.kind)。

我想进行查询,按时间排序并按类型对其进行分组。

这是我使用的查询(为最佳展示而修改)

SELECT  
   *, TableA.time AS B, TableB.type AS A
FROM       
   TableB  
INNER JOIN
   TableB ON TableB.SomeID = TableA.refID
ORDER BY 
   B
GROUP BY 
   TableB.type

我得到了这个例外:

  

关键字“组”附近的语法不正确。

我该如何纠正?

2 个答案:

答案 0 :(得分:3)

ORDER BY来自GROUP BY

SELECT  *, TableA.time AS B, TableB.type AS A
FROM       TableB INNER JOIN
                  TableB ON TableB.SomeID = TableA.refID
GROUP BY TableB.type
ORDER BY B

正确的语法是:

SELECT..
FROM...
WHERE...
GROUP BY..
ORDER BY..

答案 1 :(得分:2)

您的查询有三个问题:

  1. 您在订购后有一个小组。您无法订购,然后将您的订单分组

  2. 您正在选择*并进行分组,但这不会起作用。

  3. 您正在TableB.type进行分组,但TableA.time不是聚合,因此它需要是群组或聚合的一部分。

  4. 以下是您的程序应该是什么样子的示例:

    SELECT  
        TableA.time AS B, TableB.type AS A
    FROM
        TableB 
    INNER JOIN
        TableB ON TableB.SomeID = TableA.refID
    GROUP BY 
        TableB.type, TableA.time
    ORDER BY 
        TableA.time
    

    OR

    SELECT  Max(TableA.time) AS B, TableB.type AS A
    FROM       TableB INNER JOIN
                      TableB ON TableB.SomeID = TableA.refID
    
    GROUP BY TableB.type
    ORDER BY Max(TableA.time)