Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从视图中删除硬编码值_Sql_Sql Server - Fatal编程技术网

Sql 从视图中删除硬编码值

Sql 从视图中删除硬编码值,sql,sql-server,Sql,Sql Server,我有一张桌子。它看起来有点像下面 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 AB

我有一张桌子。它看起来有点像下面

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,下面的查询。这基本上是对某一特定日期每个BBU股票交易机的掉期单位数量的总和

SELECT        swapdate, bb_ticker, SUM(swap_units) AS total_swap_units
FROM          tblSwaps
GROUP BY swapdate, bb_ticker
我已经创建了另一个视图,这是我下面显示的一个问题,利用上面的视图不确定这是否是最好的想法。下面查询的问题是,我已经硬编码了bb_股票代码ABC,DEF,但这并不理想,因为将来会有新的bb_股票代码

  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_代码的最佳方法是什么?

这可能是您想要的吗

WHERE         bb_ticker IN (select distinct bb_ticker from tblSwaps))

如何选择bb_ticker值的条件是什么?在您的示例中,使用INSELECT DISTINCT bb_ticker FROM tblSwaps就足够了,但这没有任何意义……是的,这适用于where条件部分。但是,如何选择部分,即isnullABC、0 ABC、isnullDEF、0 DEF