私はORDER BY句をカスタマイズして、 'Other Companies'が常に最後になるようにしようとしています。私はここで何が間違っているのか分からない。ここに私のコードがあります。 WHERE句は重複しているように見えるかもしれませんが、その理由は、このSQL文字列がアップロードされて日付と状態に応じて異なる方法で入力されるマクロコードでパラメータが置き換えられるからです。それを心配しないでください。私はこれまで、2つの異なる列ではなくすべてを注文した別の状況でこれを行ってきました。出力には、ORDER BY句の 'AmountOfClaims'が有効な列ではないことが示されています。誰か助けてくれますか?SQL Order by Customケース注文時
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
あなたの問題は正確です。あなたは '計算された列'である 'COUNT(co。[CompanyName])'の代わりに '[AmountOfClaims]'を使ってみようとしますが、 'ORDER BY'で' WHERE'の代わりに使用しようとします。 –