Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 取消激活两个单独的列_Sql_Sql Server_Stored Procedures_Unpivot_Lateral Join - Fatal编程技术网

Sql 取消激活两个单独的列

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,

我正在尝试从表中取消Pivot多个列。到目前为止,我已经尝试使用一个标准的Unpivot,它在第一部分是成功的,但在第二部分不是成功的。我想取消这两列的标题。我附上了一张我正在尝试做的事情的照片。这张表与错误有关。所以E1是error1的缩写,E2是error2的缩写,等等

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:这个问题很容易解决。完成。