同様の質問を見たことがありますが、この問題の解決策を見つけることができません。質問がそうであるように、テーブルの混乱に耐えますか?かなり簡単です。
次の表があります。
LDTime Value
2013-07-24 00:00:00.000 14.85
2013-07-24 00:00:00.000 1.339
2013-07-24 00:15:00.000 95.9
2013-07-24 00:15:00.000 1.285
2013-07-24 00:30:00.000 160
2013-07-24 00:30:00.000 0.952
行 1、3、および 5 は 1 つのタイプのデータです。2、4、および 6 は別のタイプです。フィルター基準に基づいてタイプを取得できる次のクエリがあります。
SELECT
A.LDTime, A.Value As AValue
FROM
Table7 G
INNER JOIN
Table1 A
INNER JOIN
Table2 B ON A.DataSetIdx = B.DataSetIdx
INNER JOIN
Table3 C ON B.RetrievalIdx = C.RetrievalIdx ON G.ActionIdx = C.ActionIdx
INNER JOIN
Table4 D ON G.SpatialRefIdx = D.SpatialRefIdx
INNER JOIN
Table5 E
INNER JOIN
Table6 F ON E.StationIdx = F.StationIDx ON D.SpatialRefIdx = E.SpatialRefIdx
WHERE
F.StationIDx = 1
AND A.ParameterIdx = 18
AND A.LDTime BETWEEN '2013-7-24' AND '2013-7-25'
ORDER
BY A.LDTime
SELECT
A.LDTime, A.Value As BValue
FROM
Table7 G
INNER JOIN
Table1 A
INNER JOIN
Table2 B ON A.DataSetIdx = B.DataSetIdx
INNER JOIN
Table3 C ON B.RetrievalIdx = C.RetrievalIdx ON G.ActionIdx = C.ActionIdx
INNER JOIN
Table4 D ON G.SpatialRefIdx = D.SpatialRefIdx
INNER JOIN
Table5 E
INNER JOIN
Table6 F ON E.StationIdx = F.StationIDx ON D.SpatialRefIdx = E.SpatialRefIdx
WHERE
F.StationIDx = 1
AND A.ParameterIdx = 19
AND A.LDTime BETWEEN '2013-7-24' AND '2013-7-25'
ORDER BY
A.LDTime
2 つのクエリ間で 1 つのフィルター変数 ( ParameterIdx
) のみを変更することに注意してください。これにより、値列に格納されるデータの種類が区別されます。
クエリを組み合わせて 1 つの結果セットを生成するにはどうすればよいですか? (または、ストアド プロシージャを使用しているため、これは複数のクエリで実行できます)。
LDTime AValue BValue
2013-07-24 00:00:00.000 14.85 1.339
2013-07-24 00:15:00.000 95.9 1.285
2013-07-24 00:30:00.000 160 0.952