SQL 服务器:不同行中两个日期的天数差异
SQL Server: difference in days for two dates in separate rows
我正在使用 SQL Server 2012,目前正在处理一份报告,要求我找出两个日期之间的天数差异。
基本上,对于特定的 ReportID
,我试图找到(ReportCompletedDate
当 ReportType = 'PaperReceived'
)-(ReportCompletedDate
当ReportType = 'Form Completed'
)
我试着在下面给出一些记录...
ReportID ReportType ReportCompletedDate
-------------------------------------------------
450 PaperReceived 9/5/2013
450 Form Completed 8/13/2013
451 PaperReceived 9/7/2013
451 Form Completed 7/12/2013
452 PaperReceived 10/6/2013
452 Form Completed 3/13/2013
所以,例如 ReportID = 450
,我想在几天内得到 9/5/2013 - 8/13/2013
。
如果有人也知道如何在日历日和工作日执行此操作,那就太棒了...但至少日历日应该没问题。
我不确定如何解决这个问题,通常当两个日期排成一行时,我更容易弄清楚,但是当日期在不同的行中时我不确定如何解决。如有任何建议,我们将不胜感激。
您可以进行自连接以使其显示在 "one line" 上。像这样:
SELECT DateDiff(day,BASE.ReportCompleteDate, FORM.ReportCompleteDate) as Diff
FROM TABLE_NAME_YOU_DID_NOT_SAY BASE
LEFT JOIN TABLE_NAME_YOU_DID_NOT_SAY FORM ON BASE.ReportId = FORM.ReportID AND FORM.ReportType = 'Form Completed'
WHERE BASE.ReportType = 'PaperRecieved'
请在下面找到一种方法...
SELECT RCVD.REPORTID
, DATEDIFF(DAY, RCVD.REPORTCOMPLETEDDATE, CMPLD.REPORTCOMPLETEDDATE) DAY_DIFF
FROM (
SELECT REPORTID
, REPORTCOMPLETEDDATE
FROM REPORTS
WHERE REPORTTYPE = 'PaperReceived'
) RCVD
JOIN (
SELECT REPORTID
, REPORTCOMPLETEDDATE
FROM REPORTS
WHERE REPORTTYPE = 'Form Completed'
) CMPLD
ON RCVD.REPORTID = CMPLD.REPORTID
我正在使用 SQL Server 2012,目前正在处理一份报告,要求我找出两个日期之间的天数差异。
基本上,对于特定的 ReportID
,我试图找到(ReportCompletedDate
当 ReportType = 'PaperReceived'
)-(ReportCompletedDate
当ReportType = 'Form Completed'
)
我试着在下面给出一些记录...
ReportID ReportType ReportCompletedDate
-------------------------------------------------
450 PaperReceived 9/5/2013
450 Form Completed 8/13/2013
451 PaperReceived 9/7/2013
451 Form Completed 7/12/2013
452 PaperReceived 10/6/2013
452 Form Completed 3/13/2013
所以,例如 ReportID = 450
,我想在几天内得到 9/5/2013 - 8/13/2013
。
如果有人也知道如何在日历日和工作日执行此操作,那就太棒了...但至少日历日应该没问题。
我不确定如何解决这个问题,通常当两个日期排成一行时,我更容易弄清楚,但是当日期在不同的行中时我不确定如何解决。如有任何建议,我们将不胜感激。
您可以进行自连接以使其显示在 "one line" 上。像这样:
SELECT DateDiff(day,BASE.ReportCompleteDate, FORM.ReportCompleteDate) as Diff
FROM TABLE_NAME_YOU_DID_NOT_SAY BASE
LEFT JOIN TABLE_NAME_YOU_DID_NOT_SAY FORM ON BASE.ReportId = FORM.ReportID AND FORM.ReportType = 'Form Completed'
WHERE BASE.ReportType = 'PaperRecieved'
请在下面找到一种方法...
SELECT RCVD.REPORTID
, DATEDIFF(DAY, RCVD.REPORTCOMPLETEDDATE, CMPLD.REPORTCOMPLETEDDATE) DAY_DIFF
FROM (
SELECT REPORTID
, REPORTCOMPLETEDDATE
FROM REPORTS
WHERE REPORTTYPE = 'PaperReceived'
) RCVD
JOIN (
SELECT REPORTID
, REPORTCOMPLETEDDATE
FROM REPORTS
WHERE REPORTTYPE = 'Form Completed'
) CMPLD
ON RCVD.REPORTID = CMPLD.REPORTID