我想爲SQLite3 DB創建一個SQL查詢。需要幫助創建一個SELECT查詢來選擇唯一的行
在我的表,我有以下的樣本數據
7/1/2011 8:02 LOGIN JOE
7/1/2011 8:15 LOGIN CAROL
7/1/2011 8:15 LOGIN JOE
7/1/2011 8:35 LOGIN SANDY
7/1/2011 13:15 LOGOFF SANDY
7/1/2011 16:15 LOGIN SANDY
7/1/2011 18:12 LOGOFF CAROL
7/1/2011 21:09 LOGOFF TED
7/1/2011 21:19 LOGIN TED
7/1/2011 22:10 LOGOFF JOE
7/1/2011 23:40 LOGOFF SANDY
7/2/2011 9:00 LOGIN JOE
7/3/2011 10:00 LOGIN JOE
7/3/2011 20:00 LOGOFF SANDY
基本上我想只得到每個日期的第一次登錄入口和同日的最後LOGOFF條目(如果可用)
所以我想查詢產生
7/1/2011 8:02 LOGIN JOE
7/1/2011 8:15 LOGIN CAROL
7/1/2011 8:35 LOGIN SANDY
7/1/2011 18:12 LOGOFF CAROL
7/1/2011 21:09 LOGOFF TED
7/1/2011 21:19 LOGIN TED
7/1/2011 22:10 LOGOFF JOE
7/1/2011 23:40 LOGOFF SANDY
7/2/2011 9:00 LOGIN JOE
7/3/2011 10:00 LOGIN JOE
7/3/2011 20:00 LOGOFF SANDY
正如您所看到的,我們感興趣的是用戶的第一次登錄和最後一次登出。
所有字段是獨立的字段存儲爲VARCHAR() EXCEPT DATE和TIME 日期存儲爲DATE 的時間被存儲爲TIME 下面是字段名,他們代表什麼。
tddate - date
tdtime - time
tdtype - LOGIN/LOGOFF
tdusername - username
並非所有登錄有相應的註銷,因爲一個人可以從網絡,而無需實際註銷斷開。
這裏是我試圖用
select tddate,
case tdtype
when 'LOGIN' then Min(tdtime)
when 'LOGOFF' then Max(tdtime)
end as tdtype from TimeData
WHERE tdusername LIKE "JOE"
查詢我得到0行數據
爲什麼tdtime和tddate分離和更重要:爲什麼它是varchar? – Jacob
我如何「轉換」它而不會丟失數據? –
你確定JOE應該用雙引號嗎?另外,如果兩列的標籤都沒有相同的標籤,則清晰度可能會更好(對於兩種情況,後兩者都是「tdtype」)。噢,並且在tddate和tdtype上的Group By會很好... –