我继承了一些调用此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(.....)
答案 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(.....);