是否可以按表达式分组?

时间:2017-12-20 13:51:02

标签: sql sql-server group-by

在SQL Server 2008中,是否可以从布尔表达式派生一个列,如下所示?

SELECT item
     , (SUM(dqty) =pty) as tORf
GROUP BY item WHERE uid = 1

2 个答案:

答案 0 :(得分:2)

您当前的语法无效且无法正常工作。但是,您可以使用equals来定义别名,如下所示:

SELECT
    item,
    pty = SUM(dqty)
FROM yourTable
GROUP BY item;

Demo

但以下情况会失败:

SELECT item, SUM(duty) = pty FROM yourTable ...

换句话说,别名需要出现在LHS上。

答案 1 :(得分:1)

是的,你可以,但不是那样直接。您可以使用CASE声明:

SELECT item, (CASE WHEN SUM(dqty) = pty THEN 1 ELSE 0 END) AS tORf
FROM your_table
GROUP BY item, pty
WHERE uid = 1

注意:我添加了遗失的FROM语句,并将pty添加到GROUP BY。如果您不想按其分组,则需要在聚合函数中使用它。它不会像你的查询一样松散。

这是demo