在SQL Server 2008中,是否可以从布尔表达式派生一个列,如下所示?
SELECT item
, (SUM(dqty) =pty) as tORf
GROUP BY item WHERE uid = 1
答案 0 :(得分:2)
您当前的语法无效且无法正常工作。但是,您可以使用equals来定义别名,如下所示:
SELECT
item,
pty = SUM(dqty)
FROM yourTable
GROUP BY item;
但以下情况会失败:
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。