用于检查字段值的CASE语句

时间:2013-07-16 13:26:08

标签: sql sql-server if-statement case

希望你的家伙可以提供帮助。

我正在从一个表中编写查询,该表具有可变数据,特别是completed列,其值可以为13,该表还有两个qty_字段{{1 }和QTYORDERED

如果QTYSHIPPED中的值为3,则COMPLETED将包含值,如果值为QTYSHIPPED,则1将包含值。

我需要做的是在我的查询中创建一个只有QTYORDERED的列,有人可以告诉我如何在SQL Server中实现这一点

2 个答案:

答案 0 :(得分:7)

这是一个简单的case声明:

select (case when completed = 1 then QTYORDERED
             when completed = 3 then QTYSHIPPED
        end) as QTY

注意,当completed具有任何其他值时,这将返回NULL。

您也可以将其写为:

select (case completed when 1 then QTYORDERED
                       when 3 then QTYSHIPPED
        end)

但是,第一种形式更为通用,为复杂逻辑提供了更大的灵活性。

答案 1 :(得分:2)

SELECT 
   CASE completed
      WHEN 1 THEN QTYORDERED 
      WHEN 3 THEN QTYSHIPPED
      ELSE 0  --Or add any logic when something goes wrong with "completed" value
   END as Quantity
FROM ....