是否可以按表达式分组?

问题描述 投票:0回答:2

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

SELECT item
     , (SUM(dqty) =pty) as tORf
GROUP BY item WHERE uid = 1
sql sql-server group-by
2个回答
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


2
投票

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

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

Demo

但以下情况会失败:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.