我有這個表: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