2011-12-02 78 views
1

給任何人提供幫助。我不是T-SQL的專家,所以我來這裏尋求一些指導。我有一個公用表表達式和兩列有用戶標識的表。我需要根據這些ID從用戶表中獲取名稱,以便顯示名稱。使用我的CTE與INNER JOINS減少了我的記錄數量,我不知道爲什麼。SQL公用表表達式(CTE)JOIN不起作用

UPDATE對不起,我應該更清楚。沒有錯誤。意外的結果。在加入之前,我返回了135條記錄。隨着加入我得到6

這裏是SQL:

;WITH CTE 
    AS (SELECT *, 
      ROW_NUMBER() OVER (PARTITION BY [ChangeRequests].[F0] 
            ORDER BY [ChangeRequests].[F8] DESC) AS RN 
     FROM [S37] AS [ChangeRequests]) 
SELECT [CTE].[F0] AS [ID] 
    ,[CTE].[F8] AS [RevisionNumber] 
    ,[CTE].[F18] AS [ChangeNumber] 
    ,[CTE].[F19] AS [Synopsis] 
    --,[CTE].[F30] AS [Responsibility] 
    ,[CTE].[F32] AS [Description] 
    ,(CASE [CTE].[F42] WHEN 0 THEN NULL ELSE dbo.ConvertSTTimestamp([CTE].[F42]) END) AS [EnteredOn] 
    ,[CTE].[F51] AS [Usr_Project] 
    --,[CTE].[F52] AS [Usr_CoResponsibility] 
    ,[CTE].[F59] AS [Usr_ReportedBy] 
    ,[CTE].[F61] AS [Usr_StarFlowStatus] 
    ,[Users1].[F7] AS [Responsibility] 
    ,[Users2].[F7] AS [CoResponsibility] 
FROM CTE 
INNER JOIN [S3] [Users1] ON [Users1].[F0] = [CTE].[F30] 
INNER JOIN [S3] [Users2] ON [Users2].[F0] = [CTE].[F52] 
WHERE (RN = 1) 

我怎樣做一個基於我的2個用戶ID列,以獲取用戶名加入?

謝謝!

+0

定義「不工作」?錯誤,意外的結果?請提供一個你開始使用的例子,你期望的和你實際得到的。 – MatBailie

+0

對不起,我應該更清楚。沒有錯誤。意外的結果。在加入之前,我返回了135條記錄。加入我得到6. – Jared

回答

4

更改INNER JOIN s到LEFT JOIN S,並告訴我們你會得到什麼,如果它是更接近你想要什麼/期望......

+1

左加入非常感謝! – Jared

+2

@ user993514但你明白爲什麼它工作? –