--逻辑:比较有条件和没有条件的count()是否相等: declare @stdate DATETIME set @stdate = '2014-12-01' declare @eddate DATETIME set @eddate = '2015-02-28'SELECT * FROM ( SELECT columnA,COUNT(1) AS ucount FROM #t WHERE salesdate NOT BETWEEN @stdate AND @eddate GROUP BY columnA ) AS r JOIN( SELECT columnA,COUNT(1) AS ucount FROM #t GROUP BY columnA ) AS t ON t.columnA=r.columnA AND t.ucount=r.ucount
SELECT * FROM(SELECT columnA FROM #t GROUP BY columnA)T WHERE columnA NOT IN (SELECT columnA FROM #t WHERE salesdate BETWEEN DATEADD(MONTH,-2,@stdate)AND @eddate)这边是向前推两个月的情况 这边的IN属标量查询~
declare @stdate DATETIME set @stdate = '2014-12-01'
declare @eddate DATETIME set @eddate = '2015-02-28'SELECT *
FROM (
SELECT columnA,COUNT(1) AS ucount
FROM #t
WHERE salesdate NOT BETWEEN @stdate AND @eddate
GROUP BY columnA
) AS r
JOIN(
SELECT columnA,COUNT(1) AS ucount
FROM #t
GROUP BY columnA
) AS t ON t.columnA=r.columnA AND t.ucount=r.ucount
--> 不好意思,不明白这句的逻辑..
不知道这样描述ok不?
WHERE columnA NOT IN
(SELECT columnA FROM #t
WHERE salesdate BETWEEN DATEADD(MONTH,-2,@stdate)AND @eddate)这边是向前推两个月的情况
这边的IN属标量查询~