对于使用Cursor的SQL Server中的每个循环

时间:2013-04-17 07:28:33

标签: sql sql-server-2008

我有一张4柱的桌子。 HouseNo,日期,时间和温度。

我已经设法在一个单独的表中获得不同的HouseNos。现在我想插入所有房子的所有日期。


表中的示例数据。像这样的几百万行。

HouseNo Date Time Temp
102 1/1/2010 10:00 67
102 2/1/2010 10:00 73
102 3/1/2010 10:00 75
103 1/1/2010 10:00 69
103 2/1/2010 10:00 63
104 1/1/2010 10:00 71
104 2/1/2010 10:00 12

预期输出

表1

102 1/1/2010 
102 2/1/2010 
102 3/1/2010

表2

103 1/1/2010 
103 2/1/2010

表3

104 1/1/2010 
104 2/1/2010

然后我希望能够遍历表中的每一行,以便在温度场上执行某些操作。

2 个答案:

答案 0 :(得分:0)

如果你每天有一个ON / OFF对,并且OFF总是在ON之前,这将为你提供持续时间。

SELECT 
HouseNo,  
Date, 
DATEDIFF(s,
   MIN(CASE WHEN Relay='OFF' THEN Time ELSE NULL END),
   MIN(CASE WHEN Relay='ON' THEN Time ELSE NULL END)
) As OffDuration
FROM YourTable
GROUP BY HouseNo,  Date

但是任何普通的真实数据集都有多个ON / OFF对。你能提供更多细节吗?

答案 1 :(得分:-1)

这样的事情?

    CREATE TABLE new_table
    AS (SELECT * FROM old_table);

你也可以放一些WHERE部分和SELECT