2016-01-06 55 views
0

SQLite的初級問題。SQLite:將數據分爲兩列

我有一個表,如:

CREATE TABLE raw (ID int, t int, VarID Int, val float) 
INSERT INTO raw VALUES (1, 77 , 1,177) 
INSERT INTO raw VALUES (2, 77 , 2,277) 
INSERT INTO raw VALUES (3, 12 , 1,112) 
INSERT INTO raw VALUES (4, 12 , 2,212) 
INSERT INTO raw VALUES (5, 55 , 2,255) 

這裏t是一個時間戳,VarID指示後續val屬於哪個變量。

現在我想獲得一個視圖中,所有變量都在單獨的列,如:

t var1 var2 
77 177 277 
12 112 212 
55 None 255 

,僅供參考:

這是反向問題Reorganising Data in SQLLIte

我試過的一些代碼沒有得到想要的結果

CREATE VIEW view1 
AS SELECT 
t, 
(SELECT val FROM raw WHERE VarID=1) as var1, 
(SELECT val FROM raw WHERE VarID=2) as var2 
FROM raw as r; 
+0

您是否嘗試過任何代碼來完成此任務? – GrizzlyManBear

+0

當然是的:我只有代碼CREATE VIEW view1 AS SELECT t,(SELECT val FROM r WHERE r.VarID = 1)as var1,(SELECT val FROM r WHERE r.VarID = 2)as var2,FROM原始爲r;'不顯示所需的行爲(因爲我理解的理由)。 – BerndGit

+0

請問您是否可以在您的問題中加入評論中的代碼? – GrizzlyManBear

回答

0

隨着Avi Gurfinkel(分組)的提示,我提出了以下解決方案。這是最好的方式,還是有更優雅的方式來做到這一點?

CREATE VIEW view1 
AS SELECT 
t, 
(SELECT val FROM raw WHERE (varID=1 and r.t=raw.t)) as var1, 
(SELECT val FROM raw WHERE (varID=2 and r.t=raw.t)) as var2 
FROM raw as r 
GROUP BY t; 
+0

子查詢中的GROUP BY子句是多餘的(如果組合'varID' /'t'是唯一的)。 –

+0

感謝您的評論。將被編輯。 – BerndGit