我从系统中获取了一个摘录,该系统以下列格式显示excel中的数据:
我使用冗长的联合声明来得到以下结果:
我想知道是否有一种更好的方式比一大堆联合所有的陈述更简洁,更容易阅读?
答案 0 :(得分:1)
如果您正在使用SQL Server
,那么交叉申请将是更好的方法UNION ALL
声明
select a.* from table t
cross apply (
values (PersonId, 'Q1', Q1)
,(PersonId, 'Q2', Q2)
,(PersonId, 'Q3', Q3)
,(PersonId, 'Q4', Q4)
...
...
,(PersonId, 'Q20', Q20)
)a(PersonId, Q, Outcome)
order by a.Q, a.PersonId