查询帮助。将行拆分为5个不同的行

时间:2017-03-22 13:40:35

标签: sql split row

我有一个具有以下内容的时间查询。

ID, StaffName, PName, Description, startd1, endd1, startt1, endt1, startd2, endd2, startt2, endt2, startd3, endd3, startt3, endt3, startd4, endd4, startt4, endt4, startd5, endd5, startt5, endt5

我需要分割行,以便显示

ID, StaffName, PName, Description, startd1, endd1, startt1, endt1
ID, StaffName, PName, Description, startd2, endd2, startt2, endt2
ID, StaffName, PName, Description, startd3, endd3, startt3, endt3
ID, StaffName, PName, Description, startd4, endd4, startt4, endt4
ID, StaffName, PName, Description, startd5, endd5, startt5, endt5

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

SQL中的通用方法是使用union all

select ID, StaffName, PName, Description, startd1 as startd, endd1 as endd, startt1 as startt, endt1 as endt
from t
union all
select ID, StaffName, PName, Description, startd2, endd2, startt2, endt2
from t
union all
select ID, StaffName, PName, Description, startd3, endd3, startt3, endt3
from t
union all
select ID, StaffName, PName, Description, startd4, endd4, startt4, endt4
from t
union all
select ID, StaffName, PName, Description, startd5, endd5, startt5, endt5
from t;

如果你有一个大表,那么有更有效的方法。这需要为每个子查询扫描一次表。

列名来自第一个子查询,它重命名它们,因此没有数字。