簡體   English   中英

如何正確使用案例陳述? 如何在where或join表中使用case語句?

[英]How to use case statement properly? How to use case statement with where or join table?

我試圖用名稱1替換所有password1 = 1的顯示值,並用名稱2替換password2 = 1的顯示值,而不更改數據庫中的實際值。 但是當我執行代碼時,系統返回:

“消息4145,級別15,狀態1,第22行在'Order'附近,在期望有條件的上下文中指定的非布爾類型的表達式。”

輸出我有:


  • 名稱1,名稱2,GateCode,密碼1,密碼2,狀態


  • 賴恩(Ryan),麗莎(Lisa),1,3214,4564,FL

  • 布蘭登,瓊,2,5324,1,內華達州
  • 獅子座,本,3,1,1,1,華盛頓

我想要的輸出


  • 名稱1,名稱2,GateCode,密碼1,密碼2,狀態


  • 賴恩(Ryan),麗莎(Lisa),1,3214,4564,FL

  • 布蘭登,瓊,2,5324,內華達州瓊
  • 獅子座,本,3,獅子座,本,華盛頓

這是我的代碼:

Select Top 10 
   g.name1 as 'name1'
 , g.name1 as 'name2'
 , c.gateCode as GateCode
 , c.pas1 as 'password1'
 , c.pas2 as 'password2'
 , g.state as 'state'
from guest g
     Left code c
     on g.guest_cdoe = c.guest_code 
Where 
  CASE 
      WHEN password1 = 1 and g.guest_cdoe = c.guest_code
      Then ba.bank_name1
      WHEN password2 = 2 and g.guest_cdoe = c.guest_code
      Then ba.bank_name1
  End
Order by 3

我想這就是您想要的...很難說,但應該為您指明正確的方向。 您希望選擇語句中的大小寫不是where語句。

Select Top 10 
   g.name1 as 'name1'
 , g.name2 as 'name2'
 , c.gateCode as GateCode
 , CASE 
      WHEN c.pas1 = 1 and g.guest_cdoe = c.guest_code
      THEN g.name1 
      ELSE c.pas1
   END
 , CASE 
      WHEN c.pas2 = 1 and g.guest_cdoe = c.guest_code
      THEN g.name2 
      ELSE c.pas2
   END
 , g.state as 'state'
from guest g
     Left code c
     on g.guest_cdoe = c.guest_code 
Order by 3

暫無
暫無

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

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