Tsql 显示该区域的日期列表
也许有人能帮我,我选择了:Tsql 显示该区域的日期列表,tsql,Tsql,也许有人能帮我,我选择了: SELECT p.pers_name + ' ' + p.pers_lastname , a.hol_from , a.hol_to , ( DATEDIFF(day, a.at_nuo, a.at_iki) ) + 1 AS [Holidays days] , YEAR(a.hol_from) AS Eayrs FROM dba.holidays AS a INNER JOIN
SELECT p.pers_name + ' ' + p.pers_lastname ,
a.hol_from ,
a.hol_to ,
( DATEDIFF(day, a.at_nuo, a.at_iki) ) + 1 AS [Holidays days] ,
YEAR(a.hol_from) AS Eayrs
FROM dba.holidays AS a
INNER JOIN dba.work AS d ON a.work_id = d.work
INNER JOIN dba.pers AS p ON d.pers_id = p.pers_id
WHERE p.pers_vard = 'Name'
AND p.pers_pav = 'Lastname'
ORDER BY Eayrs DESC
此查询结果:
Name Lastname 2014-02-05 00:00:00 2014-02-07 00:00:00 3 2014
Name Lastname 2014-01-20 00:00:00 2014-01-23 00:00:00 4 2014
我有3天的假期和4天的假期在第二个星期。我怎样才能得到它
Name Lastname 2014-02-05 00:00:00
Name Lastname 2014-02-06 00:00:00
Name Lastname 2014-02-07 00:00:00
Name Lastname 2014-01-20 00:00:00
Name Lastname 2014-01-21 00:00:00
Name Lastname 2014-01-22 00:00:00
Name Lastname 2014-01-23 00:00:00
一种方法是将查询连接到一个日历表,在该日历表中,所有日期都在所需的范围内,例如365行,每个日期一行
SELECT pers_name ,
pers_lastname ,
c.calendardate
FROM ( SELECT p.pers_name + ' ' + p.pers_lastname ,
a.hol_from ,
a.hol_to ,
( DATEDIFF(day, a.at_nuo, a.at_iki) ) + 1 AS [Holidays days] ,
YEAR(a.hol_from) AS Eayrs
FROM dba.holidays AS a
INNER JOIN dba.work AS d ON a.work_id = d.work
INNER JOIN dba.pers AS p ON d.pers_id = p.pers_id
WHERE p.pers_vard = 'Name'
AND p.pers_pav = 'Lastname'
ORDER BY Eayrs DESC
) t
INNER JOIN Calendar c ON c.calendardate BETWEEN hol_from AND hol_to
您需要构建并加入日历表。就这样。