テーブル内のすべてのレコードをカンマ区切りのリストに入れて、別のデータベースのテーブルに挿入できるようにしたいと考えています。顧客のサーバーの権限の制限により、データベース名を右クリックするとオプションにアクセスすることができません。これまでに見つかったすべてのソリューションには権限があります(たとえば、タスク>データのエクスポート...)。 )動的列を持つテーブルからコンマ区切りリストを作成する方法
私はこれを行うためにCOALESCE
を使用しようとしましたが、問題は私のテーブルが任意の数の列を持つことができるということです。列はユーザーによってUIを介していつでも追加/削除できます。したがって、select文で列をハードコーディングすることはできません。
ここでは、3つの列(RowCode、RowOrd、RowText)があり、それらを印刷する変数に連結する単純なCTE文を使用して、これまで書いたことがあります。これらの列名をハードコーディングするのではなく、動的に取得する方法を探したいだけです。変数にvarchar
とそれぞれキャストして、さまざまなタイプの列名を考慮する必要もあります。
DECLARE @listStr VARCHAR(MAX)
;WITH tableData AS
(
SELECT *
FROM tableRows
)
SELECT
@listStr = ISNULL(@listStr + 'select ','select ') + '''' + RowCode + ''',''' + cast(RowOrd as varchar) + ''',''' + RowText + '''' + Char(13)
FROM
tableData
PRINT @listStr
tableRows
テーブルには、現在、事前に
select 'RowA','1.00','Row A'
select 'RowB','2.00','Row B'
おかげで正しいれ、これを、印刷された次のレコード
RowCode RowOrd RowText
-----------------------
RowA 1 Row A
RowB 2 Row B
、変数@listStr
が含まれています!
自分の価値観を "文字列化"? –
また、[関連](http://stackoverflow.com/questions/600446/how-do-you-return-the-column-names-from-a-table) –
'カラムを追加/削除することができますユーザがUIを介して時間を過ごすと、あなたは何をしているのかを知る必要があります。必要な許可を得るか、仕事をするためのツールが拒否されていることを支払っている人々に伝えます。 –