【发布时间】:2021-04-02 00:34:11
【问题描述】:
【问题讨论】:
-
您的所有行都没有在
data列中显示'colour'的示例。你的意思是'yes'?
标签: sql sql-server count case
【问题讨论】:
data 列中显示'colour' 的示例。你的意思是'yes'?
标签: sql sql-server count case
您可以使用条件并获取每个季度的 no 计数,如下所示:
select t.*,
case when count(case when data = 'no' then 1 end)
over (partition by year, quarter) > 0
then 'nocolour'
else data
end as new_column
from your_table t
【讨论】:
你可以使用窗口函数:
select t.*,
min(data) over(partition by year, quarter) as new_column
from mytable t
如果给定季度有任何'no',则new_column 为该季度的所有行取值'no'。这是有效的,因为在字符串方面,'no' < 'yes'。
【讨论】:
no 时,你想要no colour?
假设您的真正意思是“有data = 'yes' 和下一个季度,并且您想更新表格,您可以使用:
update t
set newcolumn = (case when next_max_data = 'yes' then 'colour' else 'no colour')
from t join
(select year, quarter,
lead(max(data)) over (order by year, quarter) as next_max_data
from t
group by year, quarter
) tt
on t.year = tt.year and t.quater = tt.quarter;
如果您想要一年后的季度,您可以在子查询中使用lead(max(data), 4)。
【讨论】: