簡體   English   中英

多個條件下的案例陳述?

[英]Case statement in multiple conditions?

我想檢查 mr.name 列,如果 mr.name 是 null,那么我必須將 mr.name 替換為 mr.ticket_no。 如何? 可以使用 if else 或 case 嗎?

    select ROW_NUMBER() OVER(ORDER BY mr_user) sl_no,* from (select 
    mr.name as mr_no,
    coalesce(mr.user_id,0) as mr_user
    from stock_production_lot lot
    left join kg_grn grn on (grn.name = lot.grn_no)
    left join kg_department_indent mr on (mr.name = grn.mr_no)
    order by mr.user_id) main
    where  mr_user=65

當我這樣使用

case when mr.name is null then '' else mr.ticket_no = grn.mr_no as mr_no

它會拋出一個錯誤

如果 mr.name = null 意味着我必須替換 mr.name = mr.ticket_no。 我想檢查 mr.name 列,如果 mr.name 是 null 那么我必須將 mr.name 替換為 mr.ticket_no

您可以使用 coalesce() 將 null 替換為任何內容:

 select ROW_NUMBER() OVER(ORDER BY mr_user) sl_no,* from (select 
    coalesce(mr.name,mr.ticket_no)   as mr_no,
    coalesce(mr.user_id,0) as mr_user
    from stock_production_lot lot
    left join kg_grn grn on (grn.name = lot.grn_no)
    left join kg_department_indent mr on (mr.name = grn.mr_no)
    order by mr.user_id) main
    where  mr_user=65

但是,如果您對大小寫感到滿意,請按以下方式使用:

 select ROW_NUMBER() OVER(ORDER BY mr_user) sl_no,* from (select 
    (case when mr.name is null then mr.ticket_no else mr.name end)   as mr_no,
    coalesce(mr.user_id,0) as mr_user
    from stock_production_lot lot
    left join kg_grn grn on (grn.name = lot.grn_no)
    left join kg_department_indent mr on (mr.name = grn.mr_no)
    order by mr.user_id) main
    where  mr_user=65

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM