SQL-запрос для получения данных с условием - PullRequest
0 голосов
/ 10 июля 2019

Я использую базу данных SQL Server.

A | B | C
--+---+---
1 |11 |  0
1 |12 |  0
1 |13 |  0
2 |33 |  5
2 |34 | 10
2 |35 | 78
5 |45 |  0
5 |49 |  0
5 |51 |  1
8 |10 |  0
8 |14 |  2
8 |34 |  3

Я ищу SQL-запрос для извлечения различных значений. Значение, которое имеет хотя бы одно значение C, равно нулю, но не все значения будутнуль.В приведенной выше таблице я должен получить 5 & 8

. В настоящий момент для значения A, имеющего все значения, равны нулю, я делаю, как показано ниже, поэтому было бы полезно нечто подобное

SUM(ABS(table.C)) = 0

Ответы [ 4 ]

2 голосов
/ 10 июля 2019

Если C никогда не бывает отрицательным:

select A
from mytable
group by A
having min(C) = 0
   and max(C) > 0

дб <> скрипка

Если C может быть отрицательным:

select A
from mytable
group by A
having min(abs(C)) = 0
   and max(abs(C)) > 0

дб <> скрипка

И есть много других способов:

select distinct t0.A
from mytable t0
join mytable t1 on t1.A = t0.A
where t0.C = 0
  and t1.C <> 0;
select distinct t0.A
from mytable t0
where t0.C = 0
  and exists (
    select *
    from mytable t1
    where t1.A = t0.A
      and t1.C <> 0
  );
0 голосов
/ 10 июля 2019

Я думаю, что это будет работать:

;with zeros as
(
select distinct colA
from table
where ColC=0
)

select distinct colA
from table
   join zeros on table.ColA=zeros.ColA
where table.ColC <> 0
0 голосов
/ 10 июля 2019

Вы можете попробовать:

select distinct a
from my_table t
where t.a in (select x.a from my_table x where x.c = 0)
  and t.a in (select x.a from my_table x where x.c <> 0)
0 голосов
/ 10 июля 2019

Попробуйте, как показано ниже, используя exists

select A from table
where exists (select 1 from table t2 where t1.A=t2.A
                  and t2.c=0)
 group by A
 having sum(c)<>0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...