我正在使用MSSQL server 2008
我想在单个查询中组合2个查询
SELECT Id,GroupName,Status,StartDateTime
from MasterSchedule
Where Project='Sample' AND SubProject='Sample'
AND StartDateTime between '2016-04-25' AND '2016-04-27'
SELECT sum(DATEDIFF(SECOND, CONVERT(NVARCHAR, StartTime,100) , CONVERT(NVARCHAR, EndTime,100))) as totaltime
from MasterScheduleDetails
where MasterScheduleId = Id
数据库的架构是 MasterSchedule
Id Project SubProject GroupName StartDateTime Status Time CreatedDate BrowserName RunPauseStatus
----------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------------------------------------------
22 Sample Sample TEST_01 2016-04-26 16:03:59.000 Completed 04/26/2016 16:03:18 04/26/2016 eZscript;IE NotStarted
MasterScheduleDetails Table
Id MasterScheduleId SuiteId Status RunOn StartTime SequenceNo RunSuiteId EndTime XmlReportId TestDescription
----------- ---------------- ----------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
43 22 1 Pass 192.168.1.139 04/26/2016 16:05:09 0 1 04/26/2016 16:05:41 GTSABHIJIT_abhijit.shelar_04262016160509 BPW
44 22 2 Pass 192.168.1.139 04/26/2016 16:06:11 1 2 04/26/2016 16:06:43 GTSABHIJIT_abhijit.shelar_04262016160611 BPW1
目前我正在使用for循环并获得结果
最终结果要求是
Id,GroupName,Status,StartDateTime,totaltime
22,TEST_01,Completed,2016-04-26 16:03:59.000,64
答案 0 :(得分:1)
这是你想要的吗 - 用第一个中的id替换第二个查询中的id?
SELECT sum(DATEDIFF(SECOND, StartTime, EndTime)) as totaltime
from MasterScheduleDetails
where MasterScheduleId in (SELECT Id
from MasterSchedule
Where Project = 'Sample' AND SubProject = 'Sample' AND
StartDateTime between '2016-04-25' AND '2016-04-27'
);
注意:这会将转化修复为nvarchar()
。 DATEDIFF()
以date
/ datetime
值运行,而不是字符串。将有效日期/时间转换为字符串是荒谬的,只是可以将其隐式转换回日期/时间。