2017-02-16 44 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