选择查询时选择大小写

时间:2017-09-13 18:50:10

标签: sql sql-server

我需要你帮助解决这个问题。我想根据某些条件获取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 个答案:

答案 0 :(得分:3)

如果您只需要一列(例如choicename),并且连接数为1:(0-1),那么您可以对每个列使用left join,并使用case表达式:

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#