Я пытаюсь настроить предложение ORDER BY так, чтобы «другие компании» всегда приходили последними. Я не уверен, что здесь не так. Вот мой код. Предложения WHERE могут показаться излишними, но это связано с тем, что параметры заменяются кодом Macros, где эта строка SQL загружается для заполнения по-разному в зависимости от даты и состояния. Не беспокойтесь об этом. Я сделал это раньше для другой ситуации, когда я заказывал все, но не с двумя разными столбцами. Вывод говорит, что «AmountOfClaims» в предложении ORDER BY не является допустимым столбцом. Кто-нибудь может мне помочь?SQL Order by Custom CASE WHEN order
SELECT
CASE
WHEN co.[CompanyName] != ''
THEN co.CompanyName
ELSE 'Unspecified Companies'
END AS CompanyName,
COUNT(co.[CompanyName]) AS [AmountOfClaims]
FROM
(SELECT
CASE
WHEN [Claims].[CompanyName] IN (SELECT TOP 10 [Claims].[CompanyName]
FROM [Claims]
WHERE Claims.[HousingRequested] >= '2016-08-02'
AND Claims.[HousingRequested] <= '2016-08-16'
AND (Claims.[State] = NULL OR Claims.[State] >= CASE WHEN NULL IS NULL THEN ' ' ELSE 'ZZZZ' END)
GROUP BY [Claims].[CompanyName]
ORDER BY COUNT([Claims].[CompanyName]) DESC)
THEN [Claims].[CompanyName]
ELSE 'Other Companies'
END AS [CompanyName]
FROM
[Claims]
WHERE
Claims.[HousingRequested] >= '2016-08-02'
AND Claims.[HousingRequested] <= '2016-08-16'
AND (Claims.[State] = NULL OR Claims.[State] >= CASE WHEN NULL IS NULL THEN ' ' ELSE 'ZZZZ' END)
) AS co
GROUP BY
co.[CompanyName]
ORDER BY
CASE
WHEN [CompanyName] = 'Other Companies'
THEN 9999
ELSE [AmountOfClaims]
END DESC
Не на все дубликат вопроса. – mattz608
Это ваша проблема. Вы пытаетесь использовать '[AmountOfClaims]' вместо 'COUNT (co. [CompanyName])', который является 'вычисленным столбцом', но вместо' WHERE' вы пытаетесь использовать его на 'ORDER BY' –