我無法實現看起來應該很簡單的事情。下面的例子表明,人們參加班,一個人可以在多個類別中註冊,但只有一個目前:從具有分組ID的表中選擇值,但在非分組列中有差異
DECLARE @Test TABLE
(
PersonId int NOT NULL,
LocationId int NOT NULL,
ClassId int NOT NULL,
IsEnrolled bit NOT NULL,
IsExited bit NOT NULL
)
添加數據:
INSERT INTO @Test
SELECT 1,5,6,1,0
UNION SELECT 1,6,7,0,1
UNION SELECT 2,5,8,1,0
UNION SELECT 2,5,9,0,1
UNION SELECT 3,5,9,0,1
UNION SELECT 3,6,9,1,0
我想所有的記錄(當前或者不是)爲所有他們的註冊都在同一位置(具有相同的LocationId)的人,但只有當前(IsEnrolled = 1)的位置不同的值。 對於同一個PersonId,如果LocationId唯一,並且只有當前(IsEnrolled = 1),如果LocationId對PersonId不唯一,則需要所有記錄。
數據我想從一個查詢回:
SELECT
1 AS PersonId,
6 AS ClassId,
1 As IsEnrolled,
0 AS IsExited
UNION SELECT 2, 8, 1, 0
UNION SELECT 2, 9, 0, 1
UNION SELECT 3, 9, 1, 0
首先,你可以定義如何確定「的人「?是否「Id」是個人ID「?否則,我無法看到如何跟蹤這些記錄中的個人。此外,您是否可以更詳細地定義」他們的所有入學都在同一地點?「的含義?這意味着對於Id(假設這是PersonId)的每個組(記錄窗口)是相同的並且LocationId是相同的,該窗口中的所有記錄都被標記爲IsEnrolled? –
@magnum_pi - 爲了澄清而將其重命名爲Id ,'在相同的位置'意味着LocationId在行中是相同的。謝謝 – Noel
您對我期望的結果的描述不清楚。「所有登記在同一地點的所有記錄」。從您的樣本數據中,只有Person2應具有資格。和「當前位置不同」,我不知道這意味着什麼。 –