SQL Server に次のテーブルがあるとします。
Date ColA ColB
1/1/2013 Val1A Val1B
1/1/2013 Val2A NULL
1/1/2013 Val3A Val3B
1/2/2013 Val1A NULL
1/2/2013 Val2A Val4B
そして、私は日ごとの変化を見たいと思っていますColB
- この場合、次のようになります。
Date ColA ColB_Today ColB_Prev_Day
1/2/2013 Val1A NULL Val1B
1/2/2013 Val2A Val4B NULL
1/2/2013 Val3A NULL Val3B
したがって、これを行うために、次のように、単一の入力変数と計算変数を持つかなり複雑なクエリ (テーブルをそれ自体に結合) を作成しました。
DECLARE @Date Date = '1/2/2013', @PrevDay Date;
SET @PrevDay = (Select TOP 1 Date from MyTable where Date < @Date order BY Date desc);
SELECT
@Date as 'Date',
T1.ColA,
T1.ColB as ColB_Today,
T2.ColB as ColB_Prev_Day
FROM
(SELECT * FROM MyTable where Date = @Date) T1,
FULL OUTER JOIN
(SELECT * FROM MyTable where Date = @PrevDay) T2
ON
T1.ColA = T2.ColA
これは私が探しているものです。
ここで、このパラメーター化されたクエリではなく、これを (パラメーターが渡されない) ビューに変換できるようにしたいと考えています。
私がやろうとしていることが理にかなっていることを願っています...つまり、ビューには列、、、Date
&がありColA
、テーブルからデータを取得して、日付をパラメーター化する必要なく同じ結果を作成するだけです (単純に、テーブルで利用可能な日付に基づいて) - 私の最大の課題は、両方ではなく、2 つの日付のいずれかのみの値を持つ上の行のようです...ColB_Today
ColB_Prev_Day
Val3A
何かご意見は???
ありがとう!!