我有一個表import_saved_format_det的未知數目(稱爲A)的結構如下:插入值
row_id | hdr_id | column_name
1 | 1 | supplier_name
2 | 1 | branch_name
3 | 2 | supplier_name
4 | 2 | branch_name
5 | 2 | barcode
的列名的數目爲給定hdr_id是未知的,但總是5或更少。
我有另一個表稱爲traxs_temp ..__ SimpleImport_ColumnNames(稱之爲B)的結構如下:
row_id | session_id | field1 | field2 | field3 | field4 | field5
與FIELD1到字段5可爲空的。
在存儲過程中我想從插入列名的一個給定hdr_id在表B.我的問題是,我不知道有多少列名必須插入提前。
這裏是我做的,到目前爲止
DECLARE @hdr_id int = 1
DECLARE @session_id varchar(30) = 'test'
DECLARE @list varchar(max) = ''
SELECT @list = @list + '[' + column_name + '],' FROM import_saved_format_det WHERE hdr_id = @hdr_id
SELECT @list = REVERSE(STUFF(REVERSE(@list), 1, 1, ''))
DECLARE @sql NVARCHAR(MAX)
SET @sql = 'INSERT INTO traxs_temp..__SimpleImport_ColumnNames
(session_id,
field1,
field2,
field3,
field4,
field5)
SELECT
@session_id,
*
FROM
(
SELECT column_name FROM import_saved_format_det WHERE hdr_id = @hdr_id
) src PIVOT (MAX(column_name) FOR column_name IN (' + @list + ')) piv;'
EXEC SP_EXECUTESQL @sql, N'@hdr_id int, @session_id varchar(30)', @hdr_id, @session_id
但是我卻越來越INSERT語句的選擇列表包含多於插入列表中的項目少。
有沒有辦法將剩餘的字段設置爲空?或者我覺得這個錯誤?
我不明白的人downvoting無需編寫評論。這裏值得讚揚的是什麼? –