【问题标题】:CASE statement for checking a field value用于检查字段值的 CASE 语句
【发布时间】:2013-07-16 13:26:07
【问题描述】:
希望你们能帮上忙。
我正在从具有可变数据的表中编写查询,特别是 completed 列,其值可以为 1 或 3 该表还有两个 qty_ 字段 QTYORDERED 和 QTYSHIPPED
如果COMPLETED 中的值为3,则QTYSHIPPED 将包含一个值,如果值为1,则QTYORDERED 将包含一个值。
我需要做的是在我的查询中创建一个只有 QTY 的列,有人可以告诉我如何在 SQL Server 中实现这一点
【问题讨论】:
标签:
sql
sql-server
if-statement
case
【解决方案1】:
这是一个简单的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)
但是,第一种形式更通用,为复杂的逻辑提供了更大的灵活性。
【解决方案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 ....