从视图中删除硬编码值

时间:2017-02-16 12:09:20

标签: sql sql-server

我有一张桌子,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的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

这可能是你想要的吗?

WHERE         bb_ticker IN (select distinct bb_ticker from tblSwaps))