2017-02-16 16 views
2

私はテーブルを持っています、tblSwaps。それは以下のように少し見える。ビューからハードコードされた値を削除します

swapdate region  bb_ticker  swap_units 
2017-01-01 EU   ABC   10 
2017-01-01 US   ABC   40 
2017-01-01 EU   DEF   13 
2017-01-01 US   DEF   12 
2017-02-20 EU   ABC   8 
2017-02-20 US   ABC   40 
2017-02-20 EU   DEF   13 
2017-02-20 US   DEF   12 

私はまた別のテーブルを持って、tblCodes

code 
ABC 
DEF 

私は、ビューを持っている、vw_SwapTotal、以下のクエリ。これは基本的に、特定の日付の各bb_tickerのスワップ単位の数を合計します。

SELECT  swapdate, bb_ticker, SUM(swap_units) AS total_swap_units 
FROM   tblSwaps 
GROUP BY swapdate, bb_ticker 

私は上記のビューを利用し、以下に示す別のビューを(私は疑問を持っているところ、これはある)、作成した(これは最高のアイデアであるかどうかわかりません)。以下のクエリの問題は、bb_tickers(ABC、DEF)のコード化が難しく、将来的には新しいbb_tickersが存在するように理想的ではないということです。

SELECT  * 
    FROM   vw_SwapTotal 
    WHERE   bb_ticker IN ('ABC', 'DEF')) 
    SELECT  swapdate, isnull(ABC, 0) ABC, isnull(DEF, 0) DEF 
    FROM   swp AS source PIVOT (max(total_swap_units) FOR bb_ticker IN ([ABC], [DEF])) AS pvt 

このビューでハードコードされたbb_tickersを削除するにはどうすればよいでしょうか?

+0

「bb_ticker」値の選択方法はどのような条件ですか?あなたの例では、 'IN(SELECT DISTINCT bb_ticker FROM tblSwaps)'を使うだけで十分でしたが、これは意味をなさない... – Shnugo

答えて

0

これは何でもかまいませんか?

WHERE   bb_ticker IN (select distinct bb_ticker from tblSwaps)) 
+0

はい、where条件部分でうまくいくでしょう。しかし、どのように私は選択部分を行うだろうか。 isnull(ABC、0)ABC、isnull(DEF、0)DEF – mHelpMe

関連する問題