-----------------------------
| 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