2

次のように SELECT 句で一時的な列を作成しています。

SELECT *, 
       CASE WHEN a THEN 1 ELSE 0 END AS my_col 
FROM foo

これで、「my_col」を使用して結果にアクセスして注文できるようになりました。

SELECT *, 
       CASE WHEN a THEN 1 ELSE 0 END AS my_col 
FROM foo 
ORDER BY my_col

しかし、私が望むときは、次のように列を拡張します

SELECT *, 
       CASE WHEN a THEN 1 ELSE 0 END AS my_col, 
       my_col * 5 AS my_col_2 
FROM foo

SQLite は「そのような列はありません: my_col」を生成します。

では、クエリでさらに使用するために一時列を使用するにはどうすればよいですか? それはまったく可能ですか?

4

4 に答える 4

0

残念ながら、エイリアスを宣言している瞬間にエイリアスを使用することはできません。

-- this works
select col c        
from Table1
order by c;

-- this works
select col c
from Table1
where c = 1;

-- this won't
select col c,
       c * 2
from Table1
order by c;

SQLFiddleでそれらを試すことができます。

于 2013-10-11T10:19:23.020 に答える