一個我敢肯定,我必須使用IIF語句,但我不知道如何實現它在這種情況下...訪問SQL 2010選擇的兩個記錄
我寫一個查詢,以檢查來自一個地方的用戶ID與主記錄集的對應關係。但是,在某些情況下,我用來從主記錄集獲取用戶標識的標準有時會鏈接到多個用戶標識。一個是已刪除的用戶的用戶ID,另一個用戶是已激活的用戶。在有兩個記錄返回的情況下,我需要我的查詢來選擇,而不是刪除的人活躍的人...
這裏是我的查詢到目前爲止
INSERT INTO VExceptions (Carrier, [Wireless Number], Period, Carrier_UserName, Carrier_UserID, Parsed_PersNo_Carrier, MT_UserID, MT_Cost_Center, MT_Status, [CountOfUser ID], IsSpare)
SELECT LoadFile_VCharges.Carrier, LoadFile_VCharges.[Wireless Number], LoadFile_VCharges.Period, LoadFile_VCharges.[User Name], LoadFile_VCharges.[User ID], LoadFile_VCharges.[Personnel Number], MT.UserID, MT.CostCenter, MT.Status, Count(MT.UserID) AS CountOfUserID, IIf(InStr(1,[User Name],"SPARE")>0,1,0) AS IsSpare
FROM LoadFile_VCharges LEFT JOIN MT ON LoadFile_VCharges.[Personnel Number] = MT.PersonnelNumber
GROUP BY LoadFile_VCharges.Carrier, LoadFile_VCharges.[Wireless Number], LoadFile_VCharges.Period, LoadFile_VCharges.[User Name], LoadFile_VCharges.[User ID], LoadFile_VCharges.[Personnel Number], MT.UserID, MT.CostCenter, MT.Status, IIf(InStr(1,[User Name],"SPARE")>0,1,0)
HAVING (((LoadFile_VCharges.[User ID])="NA" Or (LoadFile_VCharges.[User ID])<> [MT].[UserID]))
ORDER BY LoadFile_VCharges.[Wireless Number];
除了有時選擇了錯誤記錄,這個查詢工作正常...
任何建議將不勝感激。
問候,
AG
感謝您的快速回復。這不會消除狀態被刪除的所有記錄嗎?我仍然希望條目的狀態爲已刪除(如果MT中只有一條記錄)......但不是當有一條記錄導致MT中的兩條記錄時,一條記錄被刪除,另一條記錄被激活。 – user3708244 2014-09-10 21:00:10
啊,你是對的。讓我弄清楚,我會發布更新。 – BClaydon 2014-09-10 21:03:02
好吧,所以左連接兩個子查詢 - 一個用於激活一個非活動,然後做一個coalesc(或Access中的Nz)來獲得激活,如果它存在。我會寫出來並把它放在最上面。 – BClaydon 2014-09-10 21:16:03