根据SQL

时间:2018-09-27 23:39:27

标签: sql sql-server group-by dense-rank

我对SQL很陌生。玩弄它,陷入了以下情况。

我有一张包含以下数据的表

enter image description here

我的要求是,在FirstCol列中,它的'11121'是3倍,而SecondCol是FirstCol的1001两倍,而对于相同的'11121'值则是1002。如果以这种方式存在,那么我需要在这种情况下查找所有数据,并且如果SecondCol中的值与其他值不同,则需要在这两列旁边显示一列,并带有指示1的标志值。其余部分应显示为“ 0”。

我尝试使用group by density_rank(),但无法获得所需的结果。有人请帮助我,以获得期望的结果。

2 个答案:

答案 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;

这标记了col2col1中具有多个值的所有行。