通过内部列值过滤外部查询

时间:2018-07-09 17:43:08

标签: sql sql-server tsql

我继承了一些调用此SQL示例的代码,任务是添加日期过滤器。

问题是date属性在内部表(table2)上-(选择顶部1 ....)等 因此我可以过滤表2的子查询,但是table1不会受到影响,我仍然会获得所有这些记录。

我尝试重新加入table2,但返回的记录过多。我敢肯定有一个简单而优雅的解决方案,正如您所知,SQL不是我的强项!

select col1,col2,col3,col4
(select top 1[col1] from[dbo].[TABLE2] where[dbo].[TABLE2].FK = [TABLE1].PK 
order by[dbo].[TABLE2].PK desc), 
(select top 1[col2] from[dbo].[TABLE2] where[dbo].[TABLE2].FK = [TABLE1].PK 
order by[dbo].[TABLE2].PK desc),
from TABLE1 where(.....)

1 个答案:

答案 0 :(得分:1)

也许您想要:

select t1.*, t2.*
from TABLE1 t1 outer apply --- Your current query suggests outer apply
     (select top (1) t2.col1, t2.col2
      from [dbo].[TABLE2] t2
      where t2.fk = t1.pk
      order by t2.pk desc
     ) t2
where(.....);