sql查询通过日期获取多个数据

时间:2019-05-21 13:40:08

标签: sql sql-server

表ta有四列(SQL Server和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值,该值对于所有B都具有C值零(即SUM(ABS(C))= 0),并且所有D值都不会为null,应该是> GETDATE()-90(即当前日期和90天之间的任何一天)

从上表中,我只会得到A的值为'5'

2 个答案:

答案 0 :(得分:1)

试试这个-

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
)

答案 1 :(得分:0)

您可以使用聚合。我认为这是您描述的逻辑:

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