SQL UNPIVOT?这是我应该使用的吗?

时间:2012-10-19 10:01:53

标签: sql union unpivot

所以我有这个数据结构

ID  DATE1     STATUS1 DATE2    STATUS2
1   1/1/2012  1       1/1/2012 3
1   3/1/2012  1       1/2/2012 3 
2   2/1/2012  1       3/4/2012 3
3   4/1/2012  1       NULL     3
4   2/1/2012  1       6/2/2012 3

我怎么会......

ID  DATE      STATUS
1   1/1/2012  1
1   1/1/2012  3
1   3/1/2012  1       
1   1/2/2012  3
2   2/1/2012  1       
2   3/4/2012  3
3   4/1/2012  1       
3   NULL      3
4   2/1/2012  1       
4   6/2/2012  3

我最初的猜测可能是使用大量联合的非活动?

3 个答案:

答案 0 :(得分:1)

你可以使用union:

select id, date1 mydate, status1 status
from mytable
union all
select id, date2 mydate, status2 status
from mytable

如果您想删除欺骗,只需将union all替换为union

即可

注意:我已将结果日期列命名为mydate,因为在您使用的dbms中,date可能是保留关键字..

答案 1 :(得分:1)

此处不需要UNPIVOT。简单的旧UNION ALL就足够了。

   SELECT ID, DATE1 DATE, STATUS1 STATUS
     FROM TBL
UNION ALL
   SELECT ID, DATE2 DATE, STATUS2 STATUS
     FROM TBL
 ORDER BY ID, DATE, STATUS

答案 2 :(得分:1)

我认为在你的情况下,简单的UNION会有所帮助:

select ID,  DATE1, STATUS1 FROM your_table
union 
select ID, DATE2, STATUS2 FROM your_table