Выражение общей таблицы SQL (CTE) JOIN не работает - PullRequest
1 голос
/ 02 декабря 2011

Всем, кто может помочь.Я не являюсь экспертом в T-SQL, поэтому я приду сюда за некоторыми рекомендациями.У меня есть общее табличное выражение с двумя столбцами, которые имеют идентификаторы пользователей.Мне нужно получить имя из пользовательской таблицы на основе этих идентификаторов, поэтому я отображаю имя.Использование моего CTE с INNER JOINS уменьшает количество записей, и я не знаю почему.

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)

Как мне сделать JOIN на основе моих двух столбцов идентификатора пользователя для получения имени пользователя?1011 * Спасибо!

1 Ответ

4 голосов
/ 02 декабря 2011

Измените INNER JOIN s на LEFT JOIN s, и скажите нам, что вы получаете, и если оно ближе к тому, что вы хотите / ожидаете ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...