PostgreSQL(7.4と8.x)を実行していて、これは動作していたと思っていましたが、今はエラーが発生しています。UNION ALLを使用したCASEのSQL ORDER BY
私は別々にクエリを実行できますが、それは正常に動作しますが、UNIONまたはUNION ALLの場合はエラーがスローされます。
このエラーアウト:(警告:pg_query():クエリに失敗しました:ERROR:列 "フィールド1" が存在しません... ORDER CASE "フィールド1" W BY ...)
SELECT "Field1" AS field_1, "Field2" AS field_2,
"Field3" AS field_3, "Field4" AS field_4
FROM "TableName"
WHERE condition
AND other_condition
UNION ALL
SELECT "Field1" AS field_1, "Field2" AS field_2,
"Field3" AS field_3, "Field4" AS field_4
FROM "TableName"
WHERE yet_another_condition
AND yet_another_other_condition
ORDER BY CASE "Field1"
WHEN 'A' THEN 1
WHEN 'B' THEN 2
WHEN 'C' THEN 3
ELSE 4
END
この作品:
SELECT "Field1" AS field_1, "Field2" AS field_2,
"Field3" AS field_3, "Field4" AS field_4
FROM "TableName"
WHERE yet_another_condition
AND yet_another_other_condition
ORDER BY CASE "Field1"
WHEN 'A' THEN 1
WHEN 'B' THEN 2
WHEN 'C' THEN 3
ELSE 4
END
そして、これは同様に動作します:
SELECT "Field1" AS field_1, "Field2" AS field_2,
"Field3" AS field_3, "Field4" AS field_4
FROM "TableName"
WHERE condition
AND other_condition
ORDER BY CASE "Field1"
WHEN 'A' THEN 1
WHEN 'B' THEN 2
WHEN 'C' THEN 3
ELSE 4
END
と私はORDER BYをオフのままにし、ちょうどすべてのIT UNIONまたはUNIONを使用している場合同様に動作します。
すべてのアイデア?他にすべてをかける
Field1が列名ではないために動作しません。 – Benoit
申し訳ありませんが、同じエラー –
はい、気づいた。回答が修正されました.... – CristiC