需要SQL Server的一些幫助在這裏選擇查詢。SQL Server選擇從另一個表中獲取單個行
我有以下表中定義:
UserSource
UserSourceID ID Name Dept SourceID
1 1 John AAAA 1
2 1 John AAAA 2
3 2 Nena BBBB 1
4 2 Nena BBBB 2
5 3 Gord AAAA 2
6 3 Gord AAAA 1
7 4 Stan CCCC 3
來源
SourceID Description RankOrder
1 FromHR 1
2 FromTemp 2
3 Others 3
需要加入兩個表,並選擇只列在秩是最小的。使得得到的行將是:
UserSourceID ID Name Dept SourceID Description RankOrder
1 1 John AAAA 1 FromHR 1
3 2 Nena BBBB 1 FromHR 1
6 3 Gord AAAA 1 FromHR 1
7 4 Stan CCCC 3 Others 3
TIA。
編輯:
這裏就是我來了這麼遠,但我似乎失去了一些東西:
WITH
TableA AS(
SELECT 1 AS UserSourceID, 1 AS ID, 'John' AS [Name], 'AAAA' as [Dept], 1 as SourceID
UNION SELECT 2, 1, 'John', 'AAAA', 2
UNION SELECT 3, 2, 'Nena', 'BBBB', 1
UNION SELECT 4, 2, 'Nena', 'BBBB', 2
UNION SELECT 5, 3, 'Gord', 'AAAA', 2
UNION SELECT 6, 3, 'Gord', 'AAAA', 1
UNION SELECT 7, 4, 'Stan', 'DDDD', 3)
,
TableB AS(
SELECT 1 as SourceID, 'FromHR' as [Description], 1 as RankOrder
UNION SELECT 2, 'FromTemp', 2
UNION SELECT 3, 'Others', 3
)
SELECT DISTINCT tblA.*, tblB.SourceID, tblB.Description
FROM TableB tblB
JOIN TableA tblA ON tblA.SourceID = tblB.SourceID
LEFT JOIN TableB b2 ON b2.SourceID = tblB.SourceID
AND B2.RankOrder < tblB.RankOrder
WHERE B2.SourceID IS NULL
更新: 我掃描的表,可能有數據的一些變化。我已經更新了上述問題的數據。
實際上,我需要連接這兩個表,並且只能選擇RankOrder最少的那一行。在記錄UserSourceID = 7的情況下,該特定記錄將被選中,因爲在表被加入後只有一行存在。
你能證明你已經取得了一些SQL嘗試任何項目? –
排列順序'最小值'是否總是'1'?你可以放在'WHERE RankOrder = 1'。還有'MIN()'函數 - [請參閱此處](http://technet.microsoft.com/en-us/library/ms179916.aspx) –