我对SQL很陌生。玩弄它,陷入了以下情况。
我有一张包含以下数据的表
我的要求是,在FirstCol列中,它的'11121'是3倍,而SecondCol是FirstCol的1001两倍,而对于相同的'11121'值则是1002。如果以这种方式存在,那么我需要在这种情况下查找所有数据,并且如果SecondCol中的值与其他值不同,则需要在这两列旁边显示一列,并带有指示1的标志值。其余部分应显示为“ 0”。
我尝试使用group by density_rank(),但无法获得所需的结果。有人请帮助我,以获得期望的结果。
答案 0 :(得分:0)
您可以使用EXISTS
和相关的子查询来检查是否存在具有相同的firstcol
但具有不同的secondcol
的行。如果存在这样的记录,则将其放在返回CASE
的{{1}}中,否则返回1
。
0
答案 1 :(得分:0)
我想你想要
select t.*,
(case when min(col1) over (partition by col2) =
max(col1) over (partition by col2)
then 0 else 1
end) as flag
from t;
这标记了col2
在col1
中具有多个值的所有行。