質問の結果を下記の順序で注文しようとしていますが、このエラーメッセージが表示されています。UNIONを使用しているときにクエリ結果を明示的に並べ替えるにはどうすればよいですか?
「ステートメントは、UNIONが含まれている場合、ORDER BY項目が選択リストに表示される必要があり、INTERSECTまたはEXCEPT演算子」
SELECT [Category]
FROM [dbo].[Category]
WHERE LOWER([Category]) LIKE '%yearling%' OR LOWER([Category]) LIKE '%foal%' OR LOWER([Category]) LIKE '%in%utero%'
UNION
SELECT [AcquisitionType] AS 'Category'
FROM [dbo].[AcquisitionType]
WHERE LOWER([AcquisitionType]) LIKE '%homebred%'
ORDER BY CASE WHEN [Category] = 'In Utero' THEN 1
WHEN [Category] = 'In Utero & FS' THEN 2
WHEN [Category] = 'FS in Utero' THEN 3
WHEN [Category] = 'Foal' THEN 4
WHEN [Category] = 'Foal & FS' THEN 5
WHEN [Category] = 'FS Foal' THEN 6
WHEN [Category] = 'Yearling' THEN 7
WHEN [Category] = 'Yearling & FS' THEN 8
WHEN [Category] = 'FS Yearling' THEN 9
WHEN [Category] = 'N/a' THEN 10
ELSE [Category] END ASC
私は結果は、それらがクエリに記載されている順序で返したいです。
どうすればよいですか?
私は少しこの1つに失われているので、任意の助けに感謝します。私はUNION ALL
でUNION
を置き換え
SELECT Category
FROM (SELECT [Category]
FROM [dbo].[Category]
WHERE LOWER([Category]) LIKE '%yearling%' OR LOWER([Category]) LIKE '%foal%' OR LOWER([Category]) LIKE '%in%utero%'
UNION ALL
SELECT [AcquisitionType] AS Category
FROM [dbo].[AcquisitionType]
WHERE LOWER([AcquisitionType]) LIKE '%homebred%'
) c
ORDER BY . . .;
お知らせ:
外部の選択と順序でクエリをラップします。 – xQbert