Sql 取消激活两个单独的列
我正在尝试从表中取消Pivot多个列。到目前为止,我已经尝试使用一个标准的Unpivot,它在第一部分是成功的,但在第二部分不是成功的。我想取消这两列的标题。我附上了一张我正在尝试做的事情的照片。这张表与错误有关。所以E1是error1的缩写,E2是error2的缩写,等等Sql 取消激活两个单独的列,sql,sql-server,stored-procedures,unpivot,lateral-join,Sql,Sql Server,Stored Procedures,Unpivot,Lateral Join,我正在尝试从表中取消Pivot多个列。到目前为止,我已经尝试使用一个标准的Unpivot,它在第一部分是成功的,但在第二部分不是成功的。我想取消这两列的标题。我附上了一张我正在尝试做的事情的照片。这张表与错误有关。所以E1是error1的缩写,E2是error2的缩写,等等 INSERT INTO #tempWorkflowItem SELECT AssignmentId, Code, Response FROM #temp2 UNPIVOT(Response FOR Code in (E1,
INSERT INTO #tempWorkflowItem
SELECT AssignmentId, Code, Response FROM #temp2
UNPIVOT(Response FOR Code in (E1, E2, E3 ))AS WorkflowItemsUnpivot
UNPIVOT(Reason FOR Code in (E1Reason, E2Reason, E3Reason )) AS WorkflowItemsUnpivot2
使用
应用:
select v.code, v.reason
from #temp2 t cross apply
(values ('E1', E1Reason),
('E2', E2Reason),
('E3', E3Reason)
) v(code, reason, e1, e2, de3);
select x.*
from mytable t
cross appy (values
('e1', e1, e1reason),
('e2', e2, e2reason),
('e3', e3, e3reason)
) x(code, response, reason)
我猜想您还需要一个where
子句:
where v.code = 'E1' and t.e1 > 0 and
v.code = 'E2' and t.e2 > 0 and
v.code = 'E3' and t.e3 > 0 ;
或:
将NULL
值也拉回来似乎很奇怪。使用apply
:
select v.code, v.reason
from #temp2 t cross apply
(values ('E1', E1Reason),
('E2', E2Reason),
('E3', E3Reason)
) v(code, reason, e1, e2, de3);
select x.*
from mytable t
cross appy (values
('e1', e1, e1reason),
('e2', e2, e2reason),
('e3', e3, e3reason)
) x(code, response, reason)
我猜想您还需要一个where
子句:
where v.code = 'E1' and t.e1 > 0 and
v.code = 'E2' and t.e2 > 0 and
v.code = 'E3' and t.e3 > 0 ;
或:
将NULL
值也拉回来似乎很奇怪。我建议交叉应用
:
select v.code, v.reason
from #temp2 t cross apply
(values ('E1', E1Reason),
('E2', E2Reason),
('E3', E3Reason)
) v(code, reason, e1, e2, de3);
select x.*
from mytable t
cross appy (values
('e1', e1, e1reason),
('e2', e2, e2reason),
('e3', e3, e3reason)
) x(code, response, reason)
我建议交叉应用
:
select v.code, v.reason
from #temp2 t cross apply
(values ('E1', E1Reason),
('E2', E2Reason),
('E3', E3Reason)
) v(code, reason, e1, e2, de3);
select x.*
from mytable t
cross appy (values
('e1', e1, e1reason),
('e2', e2, e2reason),
('e3', e3, e3reason)
) x(code, response, reason)
很抱歉,我忘了我还需要新表中的错误响应。我已经更新了图片以显示我的意思。对不起,对不起,我忘了我还需要新表中的错误响应。我已经更新了图片以显示我的意思。对不起,我忘了我还需要新表中的错误响应。我更新了图片以显示我的意思。很抱歉,我第一次说的不对。我真的很感谢你的帮助。@Stormfrazier:这个问题很容易解决。完成。我忘了我还需要新表中的错误响应。我更新了图片以显示我的意思。很抱歉,我第一次说的不对。我真的很感谢你的帮助。@Stormfrazier:这个问题很容易解决。完成。