[英]Reuse variables in sql query
我想知道有沒有辦法重用定義為AS
變量而不是每次都重寫我們的代碼?
Example
我有這樣的一行:
IFNULL((CASE WHEN (((c.gaji_pokok+c.tunjangan+q.jkk+q.jkm)*12)+('c.komisi' * 'c.thr') >= 6000000) then ((c.gaji_pokok+c.tunjangan+q.jkk+q.jkm)*12)+('c.komisi' * 'c.thr')*0.05 ELSE 6000000 end),0) as b_jabatan,
下次我需要這樣的命令時,我只想使用b_jabatan
而不是寫整行
example
IFNULL((b_jabatan,0) as brutto_tahun,
那可能嗎?
使用least()
函數:
coalesce(least( ((c.gaji_pokok+c.tunjangan+q.jkk+q.jkm)*12)+(c.komisi * c.thr)*0.05, 6000000
), 0
) as b_jabatan,
您不能在同一范圍內重復使用別名 - 將order by
子句(以及,在 MySQL 中, group by
和having
子句)分開。
您要么需要重復表達式,要么使用子查詢或 CTE(創建新的 scode)。 所以:
select t.*, coalesce(b_jabatan,0) as brutto_tahun, ...
from (
select
< your super long expression > as b_jabatan,
...
from ...
) t
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.