我需要添加或刪除基於variouse輸入參數的大約20列。我知道我可以在CASE語句中包裝每行,但是當我需要爲列集10添加10列時,這是大量額外的代碼。做一個動態的SQL怪物的答案是?如何根據輸入參數動態添加一組列?
這裏是什麼,我試圖做一個例子 - 回報5層特定的列時,最終用戶需要列集1:
DECLARE @AddColumns AS NVARCHAR(20) = 'Column Set 1'
SELECT
col1
, col2
, CASE WHEN @AddColumns = 'Column Set 1' OR @AddColumns = 'Include All Columns'
THEN col3, col4, col5, col6, col7
END
, CASE WHEN @AddColumns = 'Column Set 2' OR @AddColumns = 'Include All Columns'
THEN col8, col9, col10
END
, col11
FROM MyTable
任何特定的原因,你不只是想選擇所有的列,然後在客戶端處理它? –
@Conrad,我正在使用VB中的數據集,所以這是一個好主意,但if..thens從數據集中刪除行變得很麻煩,因爲我有這麼長的列名要刪除。 – BClaydon
那麼如果是這樣的話,你的兩個選項是1)一個大的IF語句,它根據輸入執行不同的查詢,或者2)調用sp_executeSQL。這兩種方法的不利之處在於,使用動態列進行查詢的工具並不是那麼好。 –