繁体   English   中英

子查询返回多个结果

[英]subquery returns multiple results

我执行了3个表,如果执行,则将数据收集到一个临时表中

选择*从#TempTable我得到

DOG     AGE GENDER  T_id    I_name                      T_name
Fiddo   4   M       1       comfy bed                   bed
Daisy   7   F       1       red mat                     bed
Fluffy  1   M       1       old rug                     bed
Fiddo   4   M       2       bowl with paw               bowl
Daisy   7   F       2       chinese food tray           bowl
Fiddo   4   M       4       fancy leather collar        collar
Daisy   7   F       4       nametags on a string        collar
Fluffy  1   M       4       custom-stamped mardingale   collar
Daisy   7   F       3       blue ball                   toy
Fluffy  1   M       3       chewy bone                  toy

对于结果集,我正在寻找针对此表执行的查询

Select Distinct DOG,
                AGE,
                GENDER,
                BED = COALESCE((Select I_name from #TempTable where DOG = DOG and T_name = 'bed'), NULL),
                BOWL = COALESCE((Select I_name from #TempTable where DOG = DOG and T_name = 'bowl'), NULL),
                TOY = COALESCE((Select I_name from #TempTable where DOG = DOG and T_name = 'toy'), NULL),
                COLLAR = COALESCE((Select I_name from #TempTable where DOG = DOG and T_name = 'collar'), NULL)
From #TempTable
我遇到了错误

子查询返回的值超过1。 当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做。

因为据我所知DOG不能解析为一个值,关于语法的任何提示我都不能正确使用DOG的行值? 我希望雏菊,菲多和蓬松的结果集中有3行,如果年龄,性别,床,碗为1或NULL,则为年龄,项圈和玩具为1或NULL。 感谢您的任何答复。

这是你想要的?

WITH Result
AS (
SELECT * FROM #TempTable
PIVOT 
(
MAX(I_name) FOR T_name IN ([Bed],[Bowl],[Collar],[Toy]) 
) AS PIvotTable
)
SELECT Dog, Age, Gender, Max(bed) AS [Bed], max(bowl) [Bowl], max(collar) [Collar], Max(Toy) [Toy]
FROM Result
GROUP BY DOG, AGE, GENDER

以上查询的结果:

结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM