私は、製品と引用符のリストをアカウントとバージョン番号で連結した次のクエリを持っています。SQL別の値を連結する
SELECT DISTINCT ST2.Account_No, ST2.version_num,
substring((SELECT ',' + ST1.ProductNo AS [text()]
FROM (SELECT DISTINCT Account_No, version_num, ProductNo, QuoteNo, RowNo
FROM uAccountProductInfo) ST1
WHERE ST1.version_num = ST2.version_num
AND ST1.Account_No = ST2.Account_No
ORDER BY ST1.RowNo, ST1.Account_No,ST1.version_num
FOR XML PATH (''))
, 2, 1000) [AllProduct]
,
substring((SELECT ','+ ST3.QuoteNo AS [text()]
FROM (SELECT DISTINCT Account_No, version_num, ProductNo, QuoteNo, RowNo
FROM [uAccountProductInfo]) ST3
WHERE ST3.version_num = ST2.version_num
AND ST3.Account_No = ST2.Account_No
ORDER BY ST3.RowNo, ST3.version_num
FOR XML PATH (''))
, 2, 1000) [AllQuote]
FROM uAccountProductInfo ST2
私が経験している問題は、戻り値が異なる結果を表示していないことです。私はそれが起こっている理由を理解していますが、それを調整する方法を理解することはできません。
戻り結果は、これは見て:私がしたいことは
Account version_num AllProduct AllQuote
1 2 aaa,aaa,aaa 111,111,111
1 3 aaa,aaa,bbb 111,111,222
ある
Account version_num AllProduct AllQuote
1 2 aaa, 111
1 3 aaa,bbb 111,222
テストデータはこのようになります:
Account version_num LOB Package Product Quote RowNo
1 2 GL 1 aaa 111 1
1 2 AU 1 aaa 111 2
1 2 PF 1 aaa 111 3
1 3 GL 1 aaa 111 1
1 3 AU 1 aaa 111 2
1 3 WK 0 bbb 222 3
彼らはの複数のインスタンスに戻ってきている理由同じ製品|見積もりは、RowNo
列を含めることによるものです。私はこれを除外して値の別個のリストを返す前に除外しましたが、値が特定の順序で来るようにRowNoで注文する必要があります。
私は頭がおかしくなっていますが、トップレベルで異なる値を返すようにクエリを調整する方法を理解することはできません。
提案がありますか?
n.b. - これは大規模なクエリの一部ですが、このサブクエリが解決されると、それはメインのものへと流れます(少なくとも私は思っています)。私は人々が必要な場合はメインクエリを投稿することができます。
ありがとうございます。それは非常にうまくいっているようです:)。私は昼食後にさらにテストをします。あなたが想定した順序は正しいです。私は明確にするために、OPのテストデータを更新しました。余計なサブクエリの注釈もありがとう。 –
あなたが精巧な演奏や合理的な演奏へのリンクを気にしているのなら、なぜあなたは '部分文字列 'よりも' stuff'を好むのですか? (前もって感謝します)。 –
@ScottHoltzman。 。 。単にlengthパラメータが必要ないためです。 –