[英]SQL Selecting from Sub Query
我有一個表,其中的合同ID具有多個值。
SELECT contractid
,milestoneid
,DATE
,type
,RANK() OVER (PARTITION BY contractid ORDER BY Milestoneid ASC) AS RankNbr
FROM [TSWDATA].[dbo].t_milestone
WHERE contractid = 1056229
contractid milestoneid date type RankNbr
1056 43269 10/10/15 Full 1
1056 43449 10/26/15 GB 2
1056 43456 10/26/15 Submit for Funding 3
1056 43463 10/26/15 Cleared 4
我需要加入主合同表並僅在值“ GB”是最大里程碑數時才拉合同。
我可以在where子句中這樣做嗎?
這對您有用嗎?
SELECT contractid
,milestoneid
,DATE
,type
,RANK() OVER (PARTITION BY contractid ORDER BY Milestoneid ASC) AS RankNbr
FROM [TSWDATA].[dbo].t_milestone
WHERE EXISTS (SELECT TOP (1) *
FROM SubTable AS s
WHERE s.type = 'GB'
AND s.contractID = [TSWDATA].[dbo].t_milestone.contractid
ORDER BY s.milestoneID DESC
)
AND contractid = 1056229
如果您需要合同表中的記錄,則可以加入排名查詢中。 只需將訂單更改為DESC,即可使RankNbr 1成為最大里程碑
SELECT *
FROM [TSWDATA].[dbo].t_contract c
JOIN (
SELECT contractid
,type
,RANK() OVER (PARTITION BY contractid ORDER BY Milestoneid DESC) AS RankNbr
FROM [TSWDATA].[dbo].t_milestone
) ms ON ms.contractid = c.contractid
WHERE
--contractid = 1056229 AND
ms.RankNbr = 1 AND ms.type = 'GB'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.