我有一张表说Timesheet,它有一个星期的小时条目存储为一行。例如:
ID Start Date Sun Mon Tue Wed Thu Fri Sat
-------------------------------------------------
1 14-Oct-2012 0 1 1 2 3 5 0
开始日期始终是星期日的日期。 我需要根据输入条件将这些数据导出到多行,每个日期一行。
例如,如果输入条件是:日期是2012年10月15日至2012年10月17日,我的输出应该是这样的:
Date Hours
------------
15-Oct 1
16-Oct 1
17-Oct 2
我正在使用SQL Server 2000,请建议我。
答案 0 :(得分:2)
SQL Server 2000没有UNPIVOT
功能,因此您可以使用UNION ALL
查询此数据并以您希望的格式获取该数据:
select date, hours
from
(
select id, startdate date, sun hours
from yourtable
union all
select id, dateadd(dd, 1, startdate), mon
from yourtable
union all
select id, dateadd(dd, 2, startdate), tue
from yourtable
union all
select id, dateadd(dd, 3, startdate), wed
from yourtable
union all
select id, dateadd(dd, 4, startdate), thu
from yourtable
union all
select id, dateadd(dd, 5, startdate), fri
from yourtable
union all
select id, dateadd(dd, 6, startdate), sat
from yourtable
) x
where date between '2012-10-15' and '2012-10-17'
答案 1 :(得分:0)
这是您如何获取表格中所有列的列表:
SELECT c.colid, c.name
FROM syscolumns c, sysobjects t
WHERE c.id = t.id
AND t.name = <YOUR_TABLE>
AND t.xtype = 'U'
ORDER BY c.colid;
您可以将其声明为子查询并加入其中并输出您想要的任何列。