我想知道如果有可能算一个记录计数状态改变
例如值之间变化的数字我有以下数据
| radio | name | state | timestamp |
|-------|------|-------|---------------------|
| 1 | AP1 | down | 2013-03-07 10:00:00 |
| 1 | AP1 | down | 2013-03-07 10:15:00 |
| 1 | AP1 | up | 2013-03-07 10:30:00 |
| 1 | AP1 | down | 2013-03-07 10:45:00 |
| 1 | AP1 | pend | 2013-03-07 11:00:00 |
| 1 | AP1 | pend | 2013-03-07 11:15:00 |
| 1 | AP1 | pend | 2013-03-07 11:30:00 |
| 1 | AP1 | pend | 2013-03-07 11:45:00 |
我需要做一个查询呢下面的技巧
| name | S1 | S2 | S3 | S4 | (other time range) |
| AP1 | A | A | B | A | C |
\ / \ / \ /
DETECT DETECT DETECT
\ \ /
\------- \ /
COUNT = 3 <-- this is the number i want
到目前为止我陷入了基于计数的SQL。
SELECT radio, name, state, COUNT(state) AS count FROM data
WHERE timestamp BETWEEN '2013-03-07 10:00:00' AND '2013-03-07 11:00:00'
GROUP BY radio, name, channel
结果届时将
| radio | name | state | count |
|-------|------|-------|-------|
| 1 | AP1 | down | 3 |
| 1 | AP1 | up | 1 |
| 1 | AP1 | pend | 1 |
所以现在的结果将是3行3又名状态变化,但后来我意识到,这是不正确的,因为这个数字 只会告诉我的号码不同的州名,在这种情况下是3。
所以我的问题是这可能在SQL中,或者我需要将结果集拉入循环并通过外部脚本或视图检测更改。
什么版本的SQL Server? – gbn 2013-03-08 09:48:52
mssql版本是2008 R2 – Ponsjuh 2013-03-08 09:53:03