2017-09-13 83 views
2

我需要您的帮助来解决此查询。我想根据一些条件获取choiceName。选择查询时选择案例

下面的代码片段

SELECT PSC.SKU_ID, PSC.Choice_ID, PSC.Option_ID, PO.*, 
     (
      Case 
       WHEN PO.Std_id = 0 
        THEN 
         (SELECT * 
          FROM ProdOpt_choices 
          WHERE option_id = PSC.Option_ID 
          AND choice_id = PSC.Choice_ID) 
       WHEN PO.Std_id = 1 
        THEN 
         (SELECT * 
          FROM StdOpt_choices 
          WHERE option_id = PSC.Option_ID 
          AND choice_id = PSC.Choice_ID)    
          ) AS Choicename 
     FROM Prod_SKU_Combos PSC 
     LEFT JOIN Product_Options PO ON PO.Option_ID = PSC.Option_ID 
     WHERE PSC.SKU_id = #SKU_ID# 

知道的任何帮助.. TIA

+1

那么你有什么问题?你错过了'CASE'的'END' – scsimon

+3

你不能在嵌套查询中有多个字段... – Eli

+0

好抓@Eli – scsimon

回答

3

如果你只需要一列(如choicename),以及连接是1:(0-1),那么你可以用left join表示:

select psc.sku_id, psc.Choice_id, psc.Option_id, po.* 
    , choicename = case 
     when po.Std_id = 0 then poc.ChoiceName 
     when po.Std_id = 1 then soc.ChoiceName 
     else soc.ChoiceName 
     end 
from Prod_sku_Combos psc 
    left join Product_Options po 
     on po.Option_id = psc.Option_id 
    left join ProdOpt_choices poc 
     on poc.option_id = psc.Option_id 
    and poc.choice_id = psc.Choice_id 
    left join StdOpt_choices soc 
     on soc.option_id = psc.Option_id 
    and soc.choice_id = psc.Choice_id 
where psc.sku_id = #sku_id# 
+0

非常感谢... – user3025605

+0

@ user3025605乐意帮忙! – SqlZim