Sql server 如何在SQL Server 2012的结果表中动态添加包含空数据的行?
我有这张桌子,上面有22行 我得到了一张如上所述的转换表 为了得到结果表,我创建了以下过程Sql server 如何在SQL Server 2012的结果表中动态添加包含空数据的行?,sql-server,Sql Server,我有这张桌子,上面有22行 我得到了一张如上所述的转换表 为了得到结果表,我创建了以下过程 ALTER PROCEDURE [dbo].[proc_YS_BAB_IR_Item] @UserId int AS BEGIN TRAN DECLARE @SqlQry NVARCHAR(MAX); SET @SqlQry = N'' DECLARE @Cnt INT = 1, @EndCnt INT = 25, @v_UserId INT
ALTER PROCEDURE [dbo].[proc_YS_BAB_IR_Item]
@UserId int
AS
BEGIN TRAN
DECLARE @SqlQry NVARCHAR(MAX);
SET @SqlQry = N''
DECLARE @Cnt INT = 1, @EndCnt INT = 25,
@v_UserId INT = CAST(@UserId AS VARCHAR(MAX));
CREATE TABLE #TempColumns
(
Calculate_ItemIdentifier VARCHAR(MAX),
SeqOrder INT
)
WHILE @cnt <= @EndCnt
BEGIN
INSERT INTO #TempColumns
SELECT
'IR'+ CAST(@Cnt AS VARCHAR(MAX)),
@Cnt
SET @Cnt = @Cnt + 1;
END
DECLARE @DATA VARCHAR(10), @DATA1 VARCHAR(10) = '000000'
DECLARE @zero_str VARCHAR(6) = '000000'
-- Generate table alike to yours
DECLARE @yourTable TABLE ([value] varchar(max))
-- convert array to xml
;WITH cte AS
(
SELECT
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rn,
[response],
CAST('<a>'+REPLACE(SUBSTRING([response],2,LEN([response]) - 2),',','</a><a>')+'</a>' as xml) AS x,
@v_UserId AS UserId,
[item_identifier]
FROM
#TempColumns
LEFT JOIN
YS_BAB_response_dump ON YS_BAB_response_dump.Item_Identifier = #TempColumns.Calculate_ItemIdentifier
AND UserId = CAST(@UserId AS VARCHAR(MAX))
AND TestModel = 'IR'
)
-- do the stuff
SELECT
c.rn,
c.[response],
c.[item_identifier],
RIGHT(@zero_str +
CAST(SUM(CAST(STUFF(@zero_str,t.c.value('.','tinyint')+1,1,'1') AS INT)) AS VARCHAR(6)), 6) AS ans,
c.UserId
FROM
cte c
CROSS APPLY
x.nodes('/a') AS t(c)
GROUP BY
c.rn, c.[response], c.UserId, c.[Item_Identifier]
ORDER BY
c.rn
COMMIT TRAN
ALTER过程[dbo]。[proc_YS_BAB_IR_Item]
@用户ID int
作为
开始训练
声明@SqlQry NVARCHAR(最大值);
设置@SqlQry=N“”
声明@Cnt INT=1,@EndCnt INT=25,
@v_UserId INT=CAST(@UserId作为VARCHAR(MAX));
创建表#临时列
(
计算_ItemIdentifier VARCHAR(最大值),
顺序整数
)
而@cnt你就快到了。使用外部应用
而不是交叉应用
首先,您需要一个列出所有内容的表-一个包含IR1到IR24的表,包括IR22等。然后,您需要外部连接现有的dataset@Nick.McDermaid-我没有更改第一个原始表的权限。您如何知道IR22存在?这些东西的清单应该放在某个表格里。如果不是,你怎么知道它停在IR24?@Nick.McDermaid-我用测试模型IR和UserId过滤该表。所以我把这个列表升级到了IR24。修复要求是,我必须在结果表中添加用户ID为NULL dataYes的IR1到IR25之间缺少的列,要做到这一点,您需要一个应该存在的所有IR的列表。看起来您应该在#TempColumns
中已经有了完整的列表。您可能需要使用外部应用
而不是交叉应用