我有兩個表:一個表有一個人的初始號碼的記錄,另一個表有這個號碼的變化記錄。
在連接程序中,我做了coalesce(latest_of_series, initial)以獲得每個人的單數。到目前為止,情況還不錯。
我還將這些數字分組到一個組中,并分別對這些組進行排序。我知道我可以做到:
select。
coalesce(latest, initial) as final,
case[/span]when coalesce(latest, inital) > 1 and coalesce( latest, inital) < 100 then 'group 1'/span>
--其他情況下
end as group
--查詢的其余部分
但這當然是可怕的不可讀的。
我試過:
select
coalesce(latest_of_series, initial_if_no_series) as value,
case
when value > 1 and value < 100 then 'group 1'/span>
--其余情況下
end as group
--查詢的其余部分
但是,sqlite抱怨說沒有 "value "列
是否真的沒有辦法使用之前的coalesce的結果作為一個 "變數"?
uj5u.com熱心網友回復:
這不是一個SQLite的限制。那是一個SQL的限制。
所有的列名都決定了是一個。你不能在查詢的第2行定義一個列,然后在查詢的第3行參考它。所有的列都來自于你選擇的表,每一個都是獨立的,它們不能相互 "看到"。
但是你可以使用嵌套查詢。
select
value。
case[/span]>
when value > = 1 and value < 100 then 'group 1'/span>
when value > = 100 and value < 200 then 'group 2'
else'group 3'
end value_group
from
(
select[/span
coalesce(latest_of_series, initial_if_no_series) as value
來自的
我的表
group by
用戶_id
) v
這樣一來,內部查詢的列可以被決定為一個,外部查詢的列可以被決定為一個。這可能會更快,這取決于周圍的情況。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/327110.html
標籤:
