本帖最后由 m_310_h_181 于 2015-03-08 15:53:36 编辑

解决方案 »

  1.   

    --逻辑:比较有条件和没有条件的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
      

  2.   

    "查询出所选时间段(@stdate到@eddate)三个月内没有数据的columnA值"
    --> 不好意思,不明白这句的逻辑..
      

  3.   

    比如,我选时间段是2月1日到2月28日,这时间往前推三个月,这三个月内没有数据的columnA值
    不知道这样描述ok不?
      

  4.   

    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属标量查询~