月份   标识
201010   1
201010   1
201010   0
201009   1
201009   1
201009   1
201009   1我想从以上表格中搜索出来共有多少个月,也就是group by 月份 但还想知道每个月是否标识里的数字都为1,如果存在不为1的那么能知道,也就是如下结果月份 是否存在
201010  1    为1就是存在不为1的标识
201009  0    为0就是不存在不为1的标识

解决方案 »

  1.   

    --> 测试数据: #tb
    if object_id('tempdb.dbo.#tb') is not null drop table #tb
    go
    create table #tb (月份 int,标识 int)
    insert into #tb
    select 201010,1 union all
    select 201010,1 union all
    select 201010,0 union all
    select 201009,1 union all
    select 201009,1 union all
    select 201009,1 union all
    select 201009,1select 月份 ,标识=case when count(distinct 标识)>1 then 1 when  min(标识)=1 then 0 end
    from #tb
    group by 月份
    月份          标识
    ----------- -----------
    201009      0
    201010      1(2 行受影响)
      

  2.   


    --> 数据库版本:
    --> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
    --> 测试数据:[TB]
    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[TB]') 
    AND type in (N'U')) 
    DROP TABLE [TB]
    GO---->建表
    create table [TB]([月份] int,[标识] int)
    insert [TB]
    select 201010,1 union all
    select 201010,1 union all
    select 201010,0 union all
    select 201009,1 union all
    select 201009,1 union all
    select 201009,1 union all
    select 201009,1
    GO--> 查询结果
    SELECT [月份],是否存在=(case when SUM(标识)>0 then 1 else 0 end)FROM [TB]
    group by [月份]
    --> 删除表格
    --DROP TABLE [TB]
      

  3.   

    月份    食品
    201010 苹果
    201010 苹果
    201010 橘子
    201009 苹果
    201009 苹果
    201009 苹果
    201009 苹果
    201008 苹果
    201008 苹果
    201008 苹果
    201007 苹果
    201007 苹果
    201007 苹果
    我想从以上表格中搜索出来共有多少个月,也就是group by 月份 但还想知道每个月的食品里是否有橘子
    也就是如下结果月份    是否存在橘子
    201010 1           为1就是存在橘子
    201009 0           为0就是不存橘子
    201008 0           为0就是不存橘子
    201007 0           为0就是不存橘子这样明白了吗?呵呵
      

  4.   


    --> 数据库版本:
    --> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
    --> 测试数据:[TB]
    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[TB]') 
    AND type in (N'U')) 
    DROP TABLE [TB]
    GO---->建表
    create table [TB]([月份] int,[标识] int)
    insert [TB]
    select 201010,1 union all
    select 201010,1 union all
    select 201010,0 union all
    select 201009,1 union all
    select 201009,1 union all
    select 201009,1 union all
    select 201009,1
    GO--> 查询结果
    SELECT [月份],是否存在=(case when avg(标识)=1 then 0 when avg(标识)=0 then 1 end)FROM [TB]
    group by [月份]
    --> 删除表格
    --DROP TABLE [TB]
      

  5.   

    --> 数据库版本:
    --> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
    --> 测试数据:[TB]
    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[TB]') 
    AND type in (N'U')) 
    DROP TABLE [TB]
    GO---->建表
    create table [TB]([月份] int,[食品] nvarchar(10))
    insert [TB]
    select 201010,'苹果' union all
    select 201010,'苹果' union all
    select 201010,'苹果' union all
    select 201009,'橘子' union all
    select 201009,'苹果' union all
    select 201009,'苹果' union all
    select 201009,'苹果'
    GOselect [月份]
    ,case when (select COUNT(*) from TB t2 where t1.[月份]=t2.月份 and t2.食品='橘子')>0 then 1 else 0 end as num
    from TB t1
    group by [月份]