SQL запрос, чтобы получить несколько данных по дате - PullRequest
0 голосов
/ 21 мая 2019

таблица ta, имеющая четыре столбца (SQL-сервер и столбец D - это дата)

A | B | C|D
1 |11| 0|10-MAY-2019
1 |12| 0|10-MAY-2019
1 |13| 0|null
2 |33| 5|null
2 |34| 10|null
2 |35| 78|null
5 |45| 0|10-MAY-2019
5 |49| 0|10-MAY-2019
5 |51| 0|10-MAY-2019
8 |10| 0|1-MAY-2018
8 |14| 0|1-MAY-2018
8 |34| 0|1-MAY-2018

Я ищу запрос SQL для извлечения отдельного значения A, имеющего значение C ZERO для всех B (т. Е. SUM (ABS (C)) = 0), и все значения D для этого не будут нулевыми и должны be> GETDATE () - 90 (т. е. любой день между текущей датой и 90 днями)

Из приведенной выше таблицы я получу только значение A как '5'

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Попробуйте это-

SELECT * FROM 
(
    SELECT A  
    FROM your_table
    WHERE D > CAST(DATEADD(DD,-90,GETDATE()) AS DATE)
    GROUP BY A
    HAVING COUNT(A) = SUM(CASE WHEN C= 0 THEN 1 ELSE 0 END)
)A
WHERE NOT EXISTS
(
    SELECT 1 FROM your_table B WHERE A.A = B.A
    AND D IS NULL
)
0 голосов
/ 21 мая 2019

Вы можете использовать агрегацию. Я думаю, что вы описываете логику:

select a
from t
where d > dateadd(day, -90, getdate()) or d is null
group by a
having max(c) = 0 and
       count(*) = count(d);  -- no NULL d values
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...