我从sql Server得到的错误是:
子查询返回的值超过1.当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做.
我正在选择更多列,但这里是给出错误的主要查询:
SELECT ItemNo,Channel,Brand,TotalUnits,(SELECT TotalUnits FROM table1 WHERE Locked = 1) As LockedUnitsFROM table1
编辑:锁定是0或1值
理想情况下,查询将返回此值(LockedUnits始终是TotalUnits的子集):
ItemNO Channel Brand TotalUnits LockedUnits1 5 AdIDas 100 802 7 Nike 500 360解决方法 看起来你要做的就是只为那些Locked = 1的行获取TotalUnits.如果是这样的话,你最好使用case:
SELECT ItemNo,case when Locked = 1 then TotalUnits else null end As LockedUnitsFROM table1
您可以使用子选择来执行此 *** 作,但您需要将子选择加入主查询.假设ItemNo是唯一的,它将如下所示:
SELECT ItemNo,(SELECT TotalUnits FROM table1 t2 WHERE Locked = 1 WHERE t1.itemno = t2.itemno) As LockedUnitsFROM table1 t1
当然,两次击中单个表来获取已经返回的行中的值是有点愚蠢的.
注释响应:您唯一希望进行子选择的时间是从同一个表中的不同表或不同行获取数据.而且,即便如此,我更喜欢将表放在where子句中并将其正常连接到主表.
总结以上是内存溢出为你收集整理的SQLServer子查询单位为列全部内容,希望文章能够帮你解决SQLServer子查询单位为列所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)