1

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_TodayColB_Prev_DayVal3A

何かご意見は???

ありがとう!!

4

1 に答える 1