如果我要查询我们的ORDERS表,我可以输入以下内容:
SELECT * FROM ORDERS
WHERE ITEM_NAME = 'Fancy Pants'
在此查询的结果中,我可能会得到以下内容:
----------------------------------------------------------------------
ORDER_ID WAIST First_Name Email
----------------------------------------------------------------------
001 32 Jason j-diddy[at]some-thing.com
005 28 Pip pirrip[at]british-mail.com
007 28 HAL9000 olhal[at]hot-mail.com
现在,我也想从另一张表中提取信息:
SELECT * FROM PRODUCTS 在哪里ITEM_NAME ='Fancy Pants'
------------------------------------------
PRODUCT_ID Product Prod_Desc
------------------------------------------
008 Fancy Pants Really fancy.
但是,最后,我实际上想通过SQL查询将这些记录压缩成一行:
-----------------------------------------------------------------------------
PRODUCT ORDER_Merged First_Name_Merged Email_Merged
-----------------------------------------------------------------------------
Fancy Pants 001,005,007 Jason,Pip,Hal9000 j-di[...].com, pirrip[...].com
无论如何,这就是它的样子。我无法弄清楚的是“合并”查询的样子。
不幸的是,我在这里的搜索引导我获得PHP的结果。我发现了几个结果:merging into CSV rows via SQL但我不认为它们会在我的场景中起作用。
任何见解都将一如既往地受到高度赞赏。
啊,结果STUFF
和FOR XML
函数为exactly what I needed。谢谢大家!!
Select
A.name,
stuff((
select ',' + B.address
from Addresses B
WHERE A.id=B.name_id
for xml path('')),1,1,'')
From Names A
答案 0 :(得分:1)
这是一篇关于群组连接的各种方法的优秀文章,其中包括各自的赞成和反对意见。
http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/
然而,就个人而言,我个人喜欢Coalesce的方法: