我有这个表:SQL:基于时间戳和代码查询状态
Timestamp[DateTime] | Code [Text]
01-jan-2010 00:00:00 | ABC
01-jan-2010 02:00:00 | AAA
01-jan-2010 02:20:00 |
01-jan-2010 03:00:00 | BBB
我想GROUP BY开始和结束时间的条目,根据该信息Code != ''
意味着RUNNING
和一切其他的意思是STOPPED
。 结果是这样的(不重复RUNNING
项,直至STOPPED
找到)
Timestamp[DateTime] | Status [Text]
01-jan-2010 00:00:00 | RUNNING
01-jan-2010 02:20:00 | STOPPED
01-jan-2010 03:00:00 | RUNNING
我想在一个单一的查询选择这两种类型,但我不认为这是完全正确的列名是相同的在这两个子查询上,它不会将RUNNING条目分组。什么是实现这一结果的最佳方法?我相信目前的做法对我不会有很大的帮助,所以任何想法都是值得欢迎的。
标准的SQL语法是最好的。 SQL Server Express也是一个选项。
当前的尝试:
SELECT Timestamp, Status
FROM (SELECT Timestamp, 'RUNNING' as Status FROM MyTable WHERE Code != ''),
(SELECT Timestamp, 'STOPPED' as Status FROM MyTable WHERE Code = '')
你能证明你目前的做法,也标记DBMS的参与? –
@vkp当然,我想使用子查询,如下所示:SELECT Timestamp,Status FROM(SELECT Timestamp,'RUNNING'as Status FROM MyTable WHERE Code =''),(SELECT Timestamp,'STOPPED'as Status FROM MyTable WHERE Code!='')。至于DBMS,我使用的是专有的,我也可以使用SQL Server Express,这就是为什么我更喜欢使用标准的SQL语法,以便能够在多个数据库中进行测试。 –
嗯你的解释停止和运行似乎倒退,如果代码!=''意味着停止,那么唯一的运行记录将是2:20 ..... – Matt