2017-08-10 71 views
0

我有下面的表,包含可以包含0,1或許多記錄
每個年底,當查詢被personID執行。我公司的任何查詢都不使用註冊ID密鑰 。該列僅在 數據庫表中需要身份密鑰時才存在。 我需要做的就是允許使用名爲@endYear的參數 ,並將其與Enrollment表中的endYear列進行匹配。 用戶將能夠選擇@endYear = 2018或@endYear = 2017t-sql 2012複雜選擇年末和最新的記錄

我需要基於結束日期 和endStatus = 202或205

的問題是選擇最新的註冊記錄當@ endYear = 2017。如果 記錄存在於endyear = 2018且(沒有endStatus = 202 或205),我無法通過personID選擇記錄。

下面是表:

CREATE TABLE [dbo].[Enrollment](
[enrollmentID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, 
[personID] [int] NOT NULL, 
[calendarID] [int] NOT NULL,  
[grade] [varchar](4) NULL, 
[active] [bit] NOT NULL,  
[startDate] [smalldatetime] NOT NULL, 
[startStatus] [varchar](4) NULL, 
[startComments] [varchar](250) NULL, 
[endDate] [smalldatetime] NULL, 
[endStatus] [varchar](4) NULL, 
[endYear] [smallint] NOT NULL 
) 

因此你能告訴我的T-SQL 2012年如何實現我的目標?

回答

2

我不能完全肯定,如果這是你在問什麼 - 但要獲得最新的行(最高結束日期)爲@personID和@endYear,這是使用查詢:

SELECT 
    TOP 1 * 
FROM 
    [dbo].[Enrollment] 
WHERE 
    [email protected] AND [email protected] AND endStatus IN (202, 205) 
ORDER BY 
    endDate DESC 
+0

非常感謝你 – user1816979