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