SQL:为分组变量创建if条件
我有一个有4列的表,需要创建一个新列,表示如果下一年的季度至少存在一个data='color',那么这个季度的所有值都更改为'color'。怎么做SQL:为分组变量创建if条件,sql,sql-server,count,case,Sql,Sql Server,Count,Case,我有一个有4列的表,需要创建一个新列,表示如果下一年的季度至少存在一个data='color',那么这个季度的所有值都更改为'color'。怎么做 您可以使用窗口功能: select t.*, min(data) over(partition by year, quarter) as new_column from mytable t 如果给定季度存在任何'no',则新列将为该季度的所有行获取值'no'。这是因为在字符串方面,'no'
您可以使用窗口功能:
select t.*,
min(data) over(partition by year, quarter) as new_column
from mytable t
如果给定季度存在任何
'no'
,则新列
将为该季度的所有行获取值'no'
。这是因为在字符串方面,'no'
可以使用窗口函数:
select t.*,
min(data) over(partition by year, quarter) as new_column
from mytable t
如果给定季度存在任何
'no'
,则新列
将为该季度的所有行获取值'no'
。这是因为在字符串方面,'no'
您可以使用条件并获得每个季度的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
您可以使用条件并获得每个季度的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
假设您的意思是“has
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)
。假设您真正的意思是“hasdata='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)
。谢谢,但是如果字符串不是像yes/no这样的字符串,那么字符串是什么?我编辑了table@ErkoTru:因此,当至少有一个无
时,您想要无颜色
?是的,正是这样谢谢,但是如果字符串不是像yes/no那样的字符串呢?@ErkoTru:那么字符串是什么呢?我编辑了table@ErkoTru:因此,当至少有一个无
时,您想要无颜色
?是的,正是这样谢谢。我还用新字符串更新了一个表。现在有3个我已经更新了答案,请检查。谢谢。我还用新字符串更新了一个表。现在有3行我已经更新了答案,请检查。数据
列中没有一行显示颜色的示例。您的意思是“是”
?在数据列中,没有一行显示颜色的示例。你的意思是“是”吗?