这样的难题谁会解决,难题都是相对而言!急!急!
表A 的字段定义如下:
站号 类型代码 监测时间 监测值
varchar(10) varchar(10) datetime float
01A01 01001 2007-1-10 10:20:00 2.24
01A02 01002 2007-1-10 10:20:00 13
02A01 01003 2007-1-10 10:20:00 6.57
02A02 01004 2007-1-10 10:20:00 3.59
03A01 01002 2007-1-10 10:20:00 16
03A04 01003 2007-1-10 10:20:00 5.87
表B 的字段定义如下:
站号 报警开始时间 报警结束时间
varchar(10) datetime datetime
01A01 2007-1-10 10:20:00 2007-1-10 10:30:00
01A02 2007-1-10 10:10:00 2007-1-10 10:20:00
02A02 2007-1-10 10:10:00 2007-1-10 10:15:00
03A01 2007-1-10 10:10:00 2007-1-10 10:15:00
03A01 2007-1-10 10:20:00 2007-1-10 10:30:00
03A04 2007-1-10 10:20:00 2007-1-10 10:25:00
我想要根据查询的天数来得到这样的记录:
下面就是2007-1-10 这一天的
站号 报警次数 报警持续时间
01A01 1 00:10:00
01A02 1 00:10:00
02A02 0 00:00:00
03A01 2 00:15:00
03A04 0 00:00:00
[解决办法]
修改下,加入A表和查詢時間
Create Table A
(站号varchar(10),
类型代码varchar(10),
监测时间datetime,
监测值float)
Insert A Select '01A01 ', '01001 ', '2007-1-10 10:20:00 ', 2.24
Union All Select '01A02 ', '01002 ', '2007-1-10 10:20:00 ', 13
Union All Select '02A01 ', '01003 ', '2007-1-10 10:20:00 ', 6.57
Union All Select '02A02 ', '01004 ', '2007-1-10 10:20:00 ', 3.59
Union All Select '03A01 ', '01002 ', '2007-1-10 10:20:00 ', 16
Union All Select '03A04 ', '01003 ', '2007-1-10 10:20:00 ', 5.87
Create Table B
(站号varchar(10),
报警开始时间datetime,
报警结束时间 datetime)
Insert B Select '01A01 ', '2007-1-10 10:20:00 ', '2007-1-10 10:30:00 '
Union All Select '01A02 ', '2007-1-10 10:10:00 ', '2007-1-10 10:20:00 '
Union All Select '02A02 ', '2007-1-10 10:10:00 ', '2007-1-10 10:15:00 '
Union All Select '03A01 ', '2007-1-10 10:10:00 ', '2007-1-10 10:15:00 '
Union All Select '03A01 ', '2007-1-10 10:20:00 ', '2007-1-10 10:30:00 '
Union All Select '03A04 ', '2007-1-10 10:20:00 ', '2007-1-10 10:25:00 '
GO
Select
站号,
报警次数,
Right(100 + 报警持续时间 / 60, 2) + ': ' + Right(100 + 报警持续时间 % 60, 2) + ':00 ' As 报警持续时间
From
(
Select
A.站号,
Count(B.站号) As 报警次数,
IsNull(SUM(DateDiff(mi, B.报警开始时间, B.报警结束时间)), 0) As 报警持续时间
From
A
Left Join
B
On A.站号 = B.站号
Where DateDiff(dd, A.监测时间, '2007-1-10 ') = 0
Group By A.站号
) T
Order By 站号
GO
Drop Table A, B
--Result
/*
站号报警次数报警持续时间
01A01100:10:00
01A02100:10:00
02A01000:00:00
02A02100:05:00
03A01200:15:00
03A04100:05:00
*/