SQLServerで 'STRING'フィールドを集計しようとしています。私はOracleのようなLISTAGGと同じ機能を探したい。SQLSERVERのListAGG
同じ機能や別の方法を知っていますか?例については
、
Field A | Field B
1 | A
1 | B
2 | A
そして私は、このクエリの結果は、あなたが結果を得るためにFOR XML PATH
を使用することができますSQL Serverで
1 | AB
2 | A
SQLServerで 'STRING'フィールドを集計しようとしています。私はOracleのようなLISTAGGと同じ機能を探したい。SQLSERVERのListAGG
同じ機能や別の方法を知っていますか?例については
、
Field A | Field B
1 | A
1 | B
2 | A
そして私は、このクエリの結果は、あなたが結果を得るためにFOR XML PATH
を使用することができますSQL Serverで
1 | AB
2 | A
になることを希望:
select distinct t1.FieldA,
STUFF((SELECT distinct '' + t2.FieldB
from yourtable t2
where t1.FieldA = t2.FieldA
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,0,'') data
from yourtable t1;
SQLSERVERで
:
SELECT FieldA , STUFF((SELECT ','+ FieldB FROM TableName a
WHERE b.FieldA = a.FieldA FOR XML PATH('')),1 ,1, '') Members
FROM TableName b
GROUP BY FieldA;
MySQLでは:オラクルで
SELECT FieldA, GROUP_CONCAT(FieldB) AS Members
FROM TableName
GROUP BY FieldA
ORDER BY FieldA;
:SQL Serverで
SELECT FieldA, LISTAGG(FieldB, ',') WITHIN GROUP (ORDER BY FieldA) AS Members
FROM TableName
GROUP BY FieldA;
すばらしい答え - マークされた答えよりも少し簡潔です+他のSQL方言も言及しています。このためのsqlserverの構文は本当に直感的ではありません。私はまた、選択肢の周りの余分な括弧が必要であることに驚いた。 –
@manas_kumarしかし...なぜSTUFFを使用していますか?それは不要です。何か不足していますか? –
@Ricardo_C STUFFは、先頭のコンマを削除するためにここで使用されています。 – DigitalDan
2017が追加されます。
SELECT t.name,STRING_AGG (c.name, ',') AS csv
FROM sys.tables t
JOIN sys.columns c on t.object_id = c.object_id
GROUP BY t.name
ORDER BY 1
また、STRING_SPLITはそれがworksssssssssssのSQL Server 2016
STRING_AGG/STRING_SPLITも最近Azure SQLデータベースに追加されました。 –
注:vNextにはSQL Serverという名前が付けられています。2017 –
異なるc.nameを使用する方法を知っていますか。すべての連結名は一意ですか? –
で逆の場合のために便利であり、使用可能です!!!!あなたのお手伝いに多くのご協力ありがとうございます。 – user1557642
サブセレクションにorder by句を挿入したいと思います。この句を挿入する方法を知っていますか? – user1557642
@ user1557642何を注文しますか?値を逆にしますか?あなたは簡単に 'ORDER BY'を追加することができます - このデモを見る - http://www.sqlfiddle.com/#!3/0836c/7。この場合、 'FieldA'の結果は' BA' – Taryn