使用条件来更改SQL中的整列

时间:2014-01-14 16:33:23

标签: sql sql-server

我有一个似乎在暗示我的SQL问题。我的表看起来像这样:

Date          Equipment_ID     Condition
2013-01-01        1               Good
2013-01-01        2               Good
2013-01-01        3              unused
2013-01-02        1              unused
2013-01-02        2               good
2013-01-02        3               good
2013-01-03        1              unused
2013-01-03        2              unused
2013-01-03        3              unused

我需要做的是添加另一列Equipment_Used。此列将显示“是”或“否”。条件是对于日期周期,如果所有三个都未使用,则Equipment_Used对于所有三个都是'否',并且如果即使日期周期的条件有好,那么所有三个将是'是'。我明白我是否使用:

UPDATE my_Table
  SET Equipment_Used =
    CASE Condition
      WHEN 'unused' THEN 'No'
      ELSE 'Yes'
    END

这会将单个元素设置为yes或no但是我想按日期对它们进行分组,并且只使用我设置的条件。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

假设您已经创建了新列并填充了“no”,则以下内容应该起作用:

update yourTable t1
   set Equipment_Used = 'yes'
 where exists (
       select 1
         from yourTable t2
        where t1.Date = t2.Date
          and t2.condition = 'good'
);

如果那天有任何好的项目,你将Equipment_Used设置为'yes';至少这是我理解你的问题的方式

答案 1 :(得分:0)

我相信这就是诀窍 - 假设你的意思是:

  

如果日期周期的条件 ONE 那么好   这三个都是'是'

WITH cte AS 
(
    SELECT 
        EquipmentId, 
        SUM(CASE WHEN Condition = 'unused' THEN 1 ELSE 0 END) AS UnusedCount
    FROM Equipment
    GROUP BY EquipmentId
)
UPDATE e
  SET e.Equipment_Used =
    CASE cte.UnusedCount
      WHEN 3 THEN 'No'
      ELSE 'Yes'
    END 
FROM Equipment e 
    LEFT OUTER JOIN cte 
    ON e.EquipmentID = cte.EquipmentID;

Sql Fiddle is back up again