我有一个似乎在暗示我的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但是我想按日期对它们进行分组,并且只使用我设置的条件。谢谢你的帮助。
答案 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;