SQL-запрос ORDER BY для столбца, а не для выбора для объединенных таблиц - PullRequest
0 голосов
/ 04 октября 2018

Проблема, с которой я сталкиваюсь, заключается в следующем: у меня объединены 2 таблицы, и я хочу получить 2 столбца (по 1 в каждом), но я хочу упорядочить по третьему столбцу в одной из таблиц. До сих пор я былне удалось, это запрос, который я пробовал, но он не работает.

SELECT
    [Months].[Month] AS 'Name',
    SUM(ISNULL([Documents].[Balance],0)) AS 'Value'
FROM (
    SELECT 
        [Months].[Month],
        SUM(ISNULL([Documents].[Balance],0)),
        MONTH([Documents].[Date])
    FROM
        [Documents]
    LEFT JOIN [Months] ON
        [Months].[MonthNumber] = MONTH([Documents].[Date])
    GROUP BY
        [Months].[Month], MONTH([Documents].[Date])
    ORDER BY
        MONTH([Documents].[Date]) ASC
)

Любая помощь в этом вопросе?

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Зачем здесь нужен подзапрос?Вы можете JOIN & использовать ORDER BY предложение:

SELECT m.[Month], SUM(ISNULL(d.[Balance], 0))
FROM [Documents] d LEFT JOIN 
     [Months] m 
     ON m.[MonthNumber] = MONTH(d.[Date])
GROUP BY m.[Month], MONTH(d.[Date])
ORDER BY MONTH(d.[Date]);

Однако, столбец в предложении order by, которого нет в выражении SELECT, не имеет никакого смысла.

0 голосов
/ 04 октября 2018

вы должны использовать порядок по столбцу в списке выбора

SELECT 
        [Months].[Month] AS 'Name',
        SUM(ISNULL([Documents].[Balance],0)) AS 'Value',
        MONTH([Documents].[Date]) AS  dcosdate
    FROM
        [Documents]
    LEFT JOIN [Months] ON
        [Months].[MonthNumber] = MONTH([Documents].[Date])
    GROUP BY
        [Months].[Month], MONTH([Documents].[Date])
    ORDER BY
        MONTH([Documents].[Date]) 
0 голосов
/ 04 октября 2018

вам не нужна производная таблица / подзапрос.

    SELECT 
        [Months].[Month] AS 'Name',
        SUM(ISNULL([Documents].[Balance],0)) AS 'Value',
        MONTH([Documents].[Date]) AS 'Mth'
    FROM
        [Documents]
    LEFT JOIN [Months] ON
        [Months].[MonthNumber] = MONTH([Documents].[Date])
    GROUP BY
        [Months].[Month], MONTH([Documents].[Date])
    ORDER BY
        Mth ASC

, если вам нужен только столбец Имя и значение в качестве результата, удалите MONTH([Documents].[Date]) из SELECT и измените ORDER BY на ORDER BY MONTH([Documents].[Date])

...