如何在SQL Server中的列中出现特定值

时间:2018-09-05 00:32:55

标签: sql sql-server

我有一个这样的表:

moment(your_date).tz('Desired Timezone').format('ha z')

我希望输出为: name col2 cnt B5 2.00000000 62 B6 2.00000000 9 B4 3.00000000 1 B5 3.00000000 75 B6 3.00000000 62 B5 4.00000000 9 B6 4.00000000 11 B5 5.00000000 102 B6 5.00000000 37 ,即B4中从未出现2.00000000的所有名称。我怎么做?我正在使用SQL Server。

3 个答案:

答案 0 :(得分:2)

您可以使用EXISTS和相关子查询来检查2.00000000的值name是否存在。

SELECT DISTINCT
       t1.name
       FROM elbat t1
       WHERE NOT EXISTS (SELECT *
                                FROM elbat t2
                                WHERE t2.name = t1.name
                                      AND t2.col2 = 2.00000000);

(我假设2.00000000是数字。如果是字符串,请用单引号引起来。)

或者,您可以使用条件聚合来计算2.00000000的出现。使用HAVING仅保留此计数为0的行。

SELECT t1.name
       FROM elbat t1
       GROUP BY t1.name
       HAVING count(CASE
                      WHEN t.col1 = 2.00000000 THEN
                        1
                    END) = 0

答案 1 :(得分:1)

select distinct t1.name
from yourtable t1
where t1.name not in (
    select t2.name
    from yourtable t2
    where t2.col2 = 2.00000000)

答案 2 :(得分:1)

如果2.00000000是可能的最小值,则可以执行以下操作:

select name
from t
group by name
where min(col2) > 2.00000000;