我希望能夠將表中的所有記錄轉換爲逗號分隔列表,然後可以使用該列表插入另一個數據庫的表中。由於客戶服務器上的權限限制,當右鍵單擊數據庫名稱時,我無法訪問任何選項,到目前爲止,我發現的所有解決方案都涉及到有權這樣做(例如,任務>導出數據... )如何使用動態列創建以逗號分隔的列表
我試過使用COALESCE
來做到這一點,但問題是我的表可能有任意數量的列。用戶可以隨時通過用戶界面添加/刪除列,因此我無法在select語句中對列進行硬編碼。
這是我迄今爲止寫的,使用一個簡單的CTE語句,其中有三列(RowCode,RowOrd,RowText),並將它們連接成一個我打印出來的變量。我只想找到一種方法來動態獲取這些列名,而不是硬編碼它們。我還需要考慮各種類型的列名,方法是在變量中分別輸入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
表包含以下記錄
RowCode RowOrd RowText
-----------------------
RowA 1 Row A
RowB 2 Row B
和可變@listStr
正在打印這一點,這是正確的
select 'RowA','1.00','Row A'
select 'RowB','2.00','Row B'
提前感謝!
什麼'選擇*'? –
此外,[相關](http://stackoverflow.com/questions/600446/how-do-you-return-the-column-names-from-a-table) –
如果'列可以添加/刪除任何用戶通過用戶界面的時間,然後你需要看看你在做什麼。獲得您需要的許可或告訴支付給您的人員您被拒絕執行工作的工具。 –