我有一个非常复杂的视图,在SQL Server中返回5列,如果我使用SELECT * FROM PR_MASTER_VIEW
查询视图,我会得到我希望看到的所有结果。但是,如果我在视图中添加一个简单的WHERE
,我将无法获得预期的结果。例如,
SELECT * FROM PR_MASTER_VIEW returns;
BL_ID| M_DATE | BFH | SEQ|MT_ID
------------------------------------
20|2015-01-01| 435.0| 402|0
20|2014-01-02| 835.2| 403|0
20|2013-02-03| 335.3| 404|0
20|2012-06-04| 423.4| 405|0
20|2011-04-09| 135.8| 406|0
在BL_ID=20
上添加过滤位置会返回此
SELECT * FROM PR_MASTER_VIEW WHERE BL_ID=20 returns;
BL_ID| M_DATE | BFH | SEQ|MT_ID
------------------------------------
20|2015-01-01| 435.0| 402|0
20|2014-01-02| 835.2| 403|0
20|2011-04-09| 135.8| 406|0
关于为什么我没有看到预期结果的任何想法?
我已经运行了SELECT DISTINCT BL_ID FROM PR_MASTER_VIEW
,它只返回一条20
(UPDATE)
create view PR_MASTER_VIEW as select bl_id, m_date, bfh, seq, mt_id
from PRM_SI_VIEW where d in ( select min (d) from PRM_SI_VIEW group by bl_id, m_date, bfh, seq )