我有两个查询,Query1:
with cte as ( select dbo.Cable.*, row_number() over(partition by dbo.Cable.TagNo order by dbo.Cable.CableRevision desc) as rn from dbo.Cable where (dbo.Cable.CableRevision = @CoreRevision ) ) select * from cte where rn = 1
还有Query2
with cte as ( select dbo.Cable.TagNo,dbo.Core.*, row_number() over(partition by dbo.Core.CoreNo order by dbo.Core.CoreRevision desc) as rn from dbo.Core INNER JOIN dbo.Cable ON dbo.Cable.Id = dbo.Core.CableId where (dbo.Core.CoreRevision <= @CoreRevision ) ) select * from cte where rn = 1
这两个查询是相关的Query1.TagNo,Query2.TagNo 我如何使用将这两个查询联接在一起,是否可以使用WithCommand来做到这一点?
Query1.TagNo
Query2.TagNo
With
谢谢
试试这个查询,也许这就是您要寻找的。
;WITH cte AS (SELECT dbo.Cable.*, row_number() over(partition by dbo.Cable.TagNo order by dbo.Cable.CableRevision desc) as rn FROM dbo.Cable WHERE dbo.Cable.CableRevision = @CoreRevision ), cte2 AS (SELECT dbo.Cable.TagNo, dbo.Core.*, row_number() over(partition by dbo.Core.CoreNo order by dbo.Core.CoreRevision desc) as rn FROM dbo.Core INNER JOIN dbo.Cable ON dbo.Cable.Id = dbo.Core.CableId WHERE dbo.Core.CoreRevision <= @CoreRevision ) SELECT * FROM cte c FULL JOIN cte2 c2 ON c.TagNo = c2.TagNo WHERE c.rn = 1 OR c2.rn = 1