1

所以我有这个数据结构

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

我最初的猜测可能是使用很多联合的 unpivots?

4

3 回答 3

1

您可以为此使用联合:

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

如果你想删除欺骗,只需替换union allunion

注意:我已经命名了结果日期列mydate,因为日期可能是您使用的任何 dbms 中的保留关键字。

于 2012-10-19T10:04:28.413 回答
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
于 2012-10-19T10:05:03.557 回答
1

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

select ID,  DATE1, STATUS1 FROM your_table
union 
select ID, DATE2, STATUS2 FROM your_table
于 2012-10-19T10:05:22.550 回答