我有一张这样的桌子:
1 | Madrid | 45000
2 | Berlin | 35000
3 | Berlin | 65000
现在我要显示这样的结果:
1 | Madrid | 45000
2 | Berlin | "Different Values"
因此,基本上,我想使用“分组依据”,如果将其分组,则将某些列的值更改为手动字符串。 我考虑过使用一个视图,将该视图中的所有值更新为我有分组列重复项的字符串,然后使用实际查询。 我什至考虑过要在执行此操作的sql服务器中实现程序集,但是我没有找到任何关于此的好的教程,只是您可以做到这一点。 还是有一个更好的主意? (这里使用的实际表非常庞大,sql查询确实有时需要花费3分钟才能执行,因此我简化了此示例,并且我不想在此处处理要分组的每一列的计数,因为这可能需要更多时间而不是几分钟。
答案 0 :(得分:2)
类似的事情应该起作用
select min(id) as id,
name,
case when count(*) = 1
then cast(sum(value) as varchar)
else 'Different values'
end as value
from your_table
group by name
答案 1 :(得分:1)
我会这样:
select min(id) as id, city,
(case when min(value) = max(value)
then cast(max(value) as varchar(255))
else 'Different Values'
end) as result
from t
group by city;
实际上,我可能会使用比“不同值”更有意义的东西,例如范围:
select min(id) as id, city,
(case when min(value) = max(value)
then cast(max(value) as varchar(255))
else cast(min(value) as varchar(255)) + '-' + cast(max(value) as varchar(255))
end) as result
from t
group by city;