我正在收集数据并存储在SQL Server中。该表由下面的示例表中显示的数据组成。我需要显示每个字段[Fault0-Fault10]处于故障状态的时间量。对于字段值,故障状态表示为1。
我使用了以下查询并获得了所需的结果。但是这只适用于一个领域。我需要在一个查询中拥有每个字段的总时间。我有问题将所有字段都拉到一个查询中。
SELECT
Distinct [Fault0]
,datediff(mi, min(DateAndTime), max(DateAndTime)) TotalTimeInMins
FROM [dbo].[Fault]
Where Fault0 =1
group by [Fault0]
结果
答案 0 :(得分:1)
假设你想要max() - min()
,那么你只需要取消数据的转移。您的查询可能如下所示:
SELECT v.faultname,
datediff(minute, min(t.DateAndTime), max(t.DateAndTime)) as TotalTimeInMins
FROM [dbo].[Fault] f CROSS APPLY
(VALUES ('fault0', fault0), ('fault1', fault1), . . ., ('fault10', fault10)
) v(faultname, value)
WHERE v.value = 1
GROUP BY v.faultname;