Reputation: 671
I am working on a C# Winforms application and trying to create a view in sqlite using the following table structure:
and this is how the view should look like:
This is the sql command but does not produce the view as wished:
SELECT tbl1.Time AS C1,
(SELECT MIN(Value) FROM tbl1 AS T WHERE Time = T.Time AND T.VarId = 2) AS C2,
(SELECT MIN(Value) FROM tbl1 AS T WHERE Time = T.Time AND T.VarId = 3) AS C3,
(SELECT MIN(Value) FROM tbl1 AS T WHERE Time = T.Time AND T.VarId = 4) AS C4,
(SELECT MIN(Value) FROM tbl1 AS T WHERE Time = T.Time AND T.VarId = 5) AS C5,
(SELECT MIN(Value) FROM tbl1 AS T WHERE Time = T.Time AND T.VarId = 6) AS C6,
(SELECT MIN(Value) FROM tbl1 AS T WHERE Time = T.Time AND T.VarId = 7) AS C7
FROM tbl1
WHERE tbl1.VarId IN (1, 2, 3, 4, 5, 6, 7)
GROUP BY tbl1.Time
ORDER BY tbl1.Time
I really appreciate any help.
Upvotes: 0
Views: 78
Reputation: 180070
In a subquery, a column name without a table name (like Time
) refers to the innermost table, in this case, T
.
This means that Time = T.Time
is interpreted as T.Time = T.Time
.
For a correlated subquery, you must compare a column of the inner table (T.Time
) and a column of the outer table (tbl1.Time
):
SELECT tbl1.Time AS Time,
(SELECT MIN(Value) FROM tbl1 AS T WHERE T.Time = tbl1.Time AND T.VarId = 1) AS C1,
(SELECT MIN(Value) FROM tbl1 AS T WHERE T.Time = tbl1.Time AND T.VarId = 2) AS C2,
(SELECT MIN(Value) FROM tbl1 AS T WHERE T.Time = tbl1.Time AND T.VarId = 3) AS C3,
(SELECT MIN(Value) FROM tbl1 AS T WHERE T.Time = tbl1.Time AND T.VarId = 4) AS C4,
(SELECT MIN(Value) FROM tbl1 AS T WHERE T.Time = tbl1.Time AND T.VarId = 5) AS C5,
(SELECT MIN(Value) FROM tbl1 AS T WHERE T.Time = tbl1.Time AND T.VarId = 6) AS C6,
(SELECT MIN(Value) FROM tbl1 AS T WHERE T.Time = tbl1.Time AND T.VarId = 7) AS C7,
(SELECT MIN(Value) FROM tbl1 AS T WHERE T.Time = tbl1.Time AND T.VarId = 8) AS C8,
(SELECT MIN(Value) FROM tbl1 AS T WHERE T.Time = tbl1.Time AND T.VarId = 9) AS C9,
tbl1.Method AS Method -- ???
FROM tbl1
GROUP BY tbl1.Time
ORDER BY tbl1.Time
Upvotes: 1