我有一个具有以下内容的时间查询。
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
任何帮助都将不胜感激。
答案 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;
如果你有一个大表,那么有更有效的方法。这需要为每个子查询扫描一次表。
列名来自第一个子查询,它重命名它们,因此没有数字。