【发布时间】:2017-07-11 21:59:29
【问题描述】:
我有 3 个表,如果我执行,我会从一个临时表中收集数据
从 #TempTable 中选择 * 我明白了
犬龄 性别 T_id I_name T_name Fiddo 4 M 1 舒适床 Daisy 7 F 1 红色垫床 蓬松 1 M 1 旧地毯床 Fiddo 4 M 2 碗带爪碗 Daisy 7 F 2 中餐盘碗 Fiddo 4 M 4 花式皮革衣领衣领 串领上的 Daisy 7 F 4 名牌 蓬松 1 M 4 定制印章马丁格尔衣领 Daisy 7 F 3 蓝球玩具 蓬松 1 M 3 耐嚼骨头玩具对于我正在寻找的结果集,我对这个表执行了这个查询
选择不同的狗, 年龄, 性别, BED = COALESCE((从#TempTable 中选择 I_name,其中 DOG = DOG 和 T_name = 'bed'),NULL), BOWL = COALESCE((从#TempTable 中选择 I_name,其中 DOG = DOG 和 T_name = 'bowl'),NULL), TOY = COALESCE((从#TempTable 中选择 I_name,其中 DOG = DOG 和 T_name = 'toy'),NULL), COLLAR = COALESCE((从#TempTable 中选择 I_name,其中 DOG = DOG 和 T_name = 'collar'),NULL) 来自#TempTable 我收到错误子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
因为据我所知,DOG 没有解析为一个值,所以我无法正确使用 DOG 的行值?我想要 Daisy、Fiddo 和 Fluffy 的结果集中有 3 行,如果他们有年龄、性别、床、碗(如果他们有一个或 NULL)、他们的项圈和他们的玩具(如果他们有一个或 NULL)。 感谢您的任何回复。
【问题讨论】:
-
SELECT中的子查询只能返回一个值。您的子查询显然返回不止一行。 -
您能否为此查询提供输出示例数据:Select I_name from #TempTable where DOG = DOG and T_name = 'bed'
-
每个子查询必须只返回一个值才能将值存储在选择中。条件 DOG = DOG 是导致错误的原因。