gpt4 book ai didi

SQLServer 子查询单元作为列

转载 作者:行者123 更新时间:2023-12-01 10:03:08 24 4
gpt4 key购买 nike

我正在尝试将子查询作为带有条件的列。

我从 SQL Server 得到的错误是:

子查询返回了 1 个以上的值。当子查询跟随 =、!=、<、<=、>、>= 或当子查询用作表达式时,这是不允许的。

我正在选择更多的列,但这是给 ma 一个错误的主要查询:

SELECT ItemNo, Channel, Brand, TotalUnits,
(SELECT TotalUnits FROM Table1 WHERE Locked = 1) As LockedUnits
FROM Table1

编辑:锁定是 0 或 1 值

理想情况下,查询会返回这个(LockedUnits 总是 TotalUnits 的一个子集):
ItemNO   Channel   Brand    TotalUnits    LockedUnits
1 5 Adidas 100 80
2 7 Nike 500 360

最佳答案

看起来您要做的是获取 TotalUnits仅适用于 Locked = 1 的那些行.如果是这种情况,最好使用 case :

SELECT ItemNo, Channel, Brand, TotalUnits,
case when Locked = 1 then TotalUnits else null end As LockedUnits
FROM Table1

您可以使用子选择来执行此操作,但您需要将子选择加入到主查询中。假设 ItemNo是独一无二的,它看起来像这样:
SELECT ItemNo, Channel, Brand, TotalUnits,
(SELECT TotalUnits FROM Table1 t2 WHERE Locked = 1
WHERE t1.itemno = t2.itemno) As LockedUnits
FROM Table1 t1

当然,两次点击单个表以获取已在您返回的行中的值是很愚蠢的。

评论响应:您唯一喜欢子选择的情况是您从不同的表或同一表中的不同行获取数据。而且,即便如此,我还是更喜欢将表放在 where 子句中并正常将其连接到主表。

关于SQLServer 子查询单元作为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13869959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com