-----------------------------
| ProductId | ModelId |
|---------------------------|
| 12345 | A3666 |
| 12345 | A3667 |
| 12345 | A8999 |
| 12346 | A3666 |
| 12346 | A3667 |
-----------------------------
模式
-----------------------------
| ModelId | Name |
|---------------------------|
| A3666 | win |
| A3667 | xia |
| A8999 | vor |
-----------------------------
我试图得到的输出是这样的:
-----------------------------------
| ProductId | Models |
|---------------------------------|
| 12345 | win,xia,vor |
| 12346 | win,xia |
-----------------------------------
我代码是:
SELECT
p.ProductId,
STUFF
(
(
SELECT ',' + Name
FROM models m
WHERE m.ModelId=p.ModelId
ORDER BY Name
FOR XML PATH(''), type
).value('.', 'varchar(max)'), 1, 1, ''
) AS ModelNames
FROM
products p
这给O/P:
-----------------------------
| ProductId | ModelNames |
|---------------------------|
| 12345 | win |
| 12345 | xia |
| 12345 | vor |
| 12346 | win |
| 12346 | xia |
-----------------------------
我要去错在何处。 [我认为这个问题已经足够清楚了,但是它不会像提及的那样提交,而是添加更多的细节,主要是代码。因此本文。]
@Querty什么是你所面对的错误。 – 2014-11-05 06:44:33
没有错误。只是不是所需的o/p,如果你看到.. – Qwerty 2014-11-05 06:46:42
我不知道为什么人们如此痴迷于使用CSV传输数据进出SQL Server。 SQL Server至少有两种数据类型(表和xml),它们被设计为保存多个值。与你不得不编写各种奇数代码来构造它们的字符串(如这里)或者将它们分开以获取值一样。并丢失任何可能有用的数据类型检查。 – 2014-11-05 07:16:04