SQL - 每列都有一个条件

时间:2017-06-16 08:41:45

标签: sql sql-server

我有一个问题,我想从表中选择,但是有别名列,每列都有一个条件。

Select Value, Target, Plan from Product

如果值为条件:where Product.DetailCode = 'A'Value =Product.Value * 10,则目标条件为:where Product.DetailCode = 'B', 专栏Value =Product.Value * 100

编辑:我想要在C#:

if(Product.DetailCode == 'A') {Value = Product.Value * 10} else if(Product.DetailCode == 'B') {Value = Product.Value * 100}

EDIT2:谢谢大家, 最后,我有自己的答案。

  

select case when product.code = 'A' then product.Value * 10 end as Value, case when product.code = 'B' then product.Value * 100 end as Target from product

非常感谢!

4 个答案:

答案 0 :(得分:1)

Select   
 case when Product.DetailCode = 'A' then 100
     WHEN  Product.DetailCode = 'B' then 10 end * Product.Value as value 
    , TARGET
    , Plan 
from Product

答案 1 :(得分:1)

您可以使用此

SELECT 
Value =  
      CASE Product.DetailCode  
         WHEN 'A' THEN Product.Value * 10
         WHEN 'B' THEN Product.Value * 100
         ELSE Product.Value * 100 
      END
, Target, Plan
FROM Product

答案 2 :(得分:0)

编辑: 阅读完更改后:

Select
   if(Product.DetailCode = 'A', value *10, if(Product.DetailCode = 'B', value * 100, value)) AS target

如果detailcode为a,则使用值* 10;如果detailCode为B,则使用值* 100;如果detailCode为其他值,则使用值。

答案 3 :(得分:0)

考虑创建一个查找表而不是像这样的硬编码条件。查询可能如下所示

select p.Value * coalesce(l.koeff,1) Value, Target, Plan 
from Product p
left join Lookup l on p.DetailCode = l.Code