我有这样一个表
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[HrbWeb_newsRecord]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[HrbWeb_newsRecord]
GOCREATE TABLE [dbo].[HrbWeb_newsRecord] (
[new_Id] [int] IDENTITY (1, 1) NOT NULL ,
[new_LanmuId] [int] NULL ,
[new_Title] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[new_Content] [text] COLLATE Chinese_PRC_CI_AS NULL ,
[new_Writer] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[new_Date] [datetime] NOT NULL ,
[new_ReadCount] [int] NOT NULL ,
[new_DeleteOk] [bit] NOT NULL ,
[new_top] [bit] NOT NULL ,
[new_Passed] [bit] NOT NULL ,
[new_titleDisplayOrFalse] [bit] NOT NULL ,
[new_owener] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[new_zhaiyao] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[new_shenhe] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
我的问的是 这个是新闻记录表 里面有一个字段是发表者new_owener 有时间字段new_Date 
我想列出 所有发表者发表记录的篇数 和数量
还有就是 new_zhaiyao 这个字段里存的是 投稿者  这就是说投稿者投的记录不一定都发表
我怎么同时算出 所有投稿者 投稿数量 和发表数量 然后按照发表数由高到低的 年度排名 请问怎么写?谢谢!!

解决方案 »

  1.   

    我想列出 所有发表者发表记录的篇数 和数量select new_owener ,count(1) 记录篇数,sum([new_ReadCount]) 数量 
    from [dbo].[HrbWeb_newsRecord] 
    group by new_owener
      

  2.   

    还有就是 new_zhaiyao 这个字段里存的是 投稿者 这就是说投稿者投的记录不一定都发表
    我怎么同时算出 所有投稿者 投稿数量 和发表数量 然后按照发表数由高到低的 年度排名 请问怎么写?select  new_zhaiyao ,sum(投稿数量) 投稿数量,sum(发表数量) 发表数量
    from [dbo].[HrbWeb_newsRecord]
    group by new_zhaiyao 
    order by 发表数量 desc粗略猜测,要更加详细请提供测试数据和想要的结果。
      

  3.   

    select  isnull(t1.new_zhaiyao,t2.new_owener) as 投稿者,
    sum(case when t1.new_zhaiyao is null then 0 else 1 end) as 投稿数量,
    sum(case when t2.new_owener is null then 0 else 1 end) as 发表数量
    from [dbo].[HrbWeb_newsRecord] t1 full join [dbo].[HrbWeb_newsRecord] t2
    on t1.new_zhaiyao=t2.new_owener
    group by  isnull(t1.new_zhaiyao,t2.new_owener) 
    order by sum(case when t2.new_owener is null then 0 else 1 end) desc
      

  4.   

    谢谢xys_777
     
    (永生,永是永生的永,生是永生的) 楼上的哥们还在吗 我这个问题隔了好几天了 不好意思啊 !!家里有事回家了 我看了一下你的语句写的很好 
    但是我现在还想加上  这两个条件 请问怎么加呢?
    left(right(new_zhaiyao,2),1)<>'支' and datepart(year,HrbWeb_newsRecord.new_Date) = 当前年份请明示 上面的语句写的很好 谢谢了 再帮帮忙 !!
      

  5.   


    select  isnull(t1.new_zhaiyao,t2.new_owener) as 投稿者,
    sum(case when t1.new_zhaiyao is null then 0 else 1 end) as 投稿数量,
    sum(case when t2.new_owener is null then 0 else 1 end) as 发表数量
    from 
    (
     select * from [HrbWeb_newsRecord] where left(right(new_zhaiyao,2),1)<>'支' and datepart(year,HrbWeb_newsRecord.new_Date) = 当前年份
    )
     t1 full join 
    (
     select * from [HrbWeb_newsRecord] where left(right(new_zhaiyao,2),1)<>'支' and datepart(year,HrbWeb_newsRecord.new_Date) = 当前年份
    )
     t2
    on t1.new_zhaiyao=t2.new_owener
    group by  isnull(t1.new_zhaiyao,t2.new_owener) 
    order by sum(case when t2.new_owener is null then 0 else 1 end) desc
      

  6.   

    还有有点 不对哥们 就是这个条件 好像没起什么作用呢 left(right(new_zhaiyao,2),1)<>'支'列出的结果依然有 “一支队”,“二支队”等 我不统计支队的 只统计 外地 比如哈尔滨,齐齐哈尔,牡丹江等
    其他的结果 和排序 都是对的 谢谢了 再帮我看看 实在迷糊了 谢谢了!! 
      

  7.   

    而且投稿者(new_zhaiyao ) 为空的 不统计 希望 大虾们帮忙 谢谢 
      

  8.   

    select  isnull(t1.new_zhaiyao,t2.new_owener) as 投稿者,
    sum(case when t1.new_zhaiyao is null then 0 else 1 end) as 投稿数量,
    sum(case when t2.new_owener is null then 0 else 1 end) as 发表数量
    from [dbo].[HrbWeb_newsRecord] t1 full join [dbo].[HrbWeb_newsRecord] t2
    on t1.new_zhaiyao=t2.new_owener and t1.new_zhaiyao is not null
    and left(right(t1.new_zhaiyao,2),1)<>'支' and datepart(year,t1.new_Date) = 当前年份
    group by  isnull(t1.new_zhaiyao,t2.new_owener) 
    order by sum(case when t2.new_owener is null then 0 else 1 end) desc
      

  9.   

    综支队   0 91
    三支队   0 76
    一支队   0 40
    四支队   0 26
    五支队   0 10
    齐齐哈尔 1 1
    绥化     1 1
    黑河     1 1
    大兴安岭 1 0
    牡丹江   1 0
    农垦     1 0
    NULL    0 0 楼上的哥们 首先很感谢你 但是你的语句执行完了以后 是上面的效果
    不应该有 null 一行 和 上面的 带有“支”字的行 谢谢 再帮我看看
      

  10.   

    select  isnull(t1.new_zhaiyao,t2.new_owener) as 投稿者,
    sum(case when t1.new_zhaiyao is null then 0 else 1 end) as 投稿数量,
    sum(case when t2.new_owener is null then 0 else 1 end) as 发表数量
    from [dbo].[HrbWeb_newsRecord] t1 full join [dbo].[HrbWeb_newsRecord] t2
    on t1.new_zhaiyao=t2.new_owener 
    where t1.new_zhaiyao is not null
    and left(right(t1.new_zhaiyao,2),1)<>'支' and datepart(year,t1.new_Date) = 当前年份
    group by  isnull(t1.new_zhaiyao,t2.new_owener) 
    order by sum(case when t2.new_owener is null then 0 else 1 end) desc
      

  11.   

    select  isnull(t1.new_zhaiyao,t2.new_owener) as 投稿者,
    sum(case when t1.new_zhaiyao is null then 0 else 1 end) as 投稿数量,
    sum(case when t2.new_owener is null then 0 else 1 end) as 发表数量
    from [dbo].[HrbWeb_newsRecord] t1 full join [dbo].[HrbWeb_newsRecord] t2
    on t1.new_zhaiyao=t2.new_owener 
    where t1.new_zhaiyao is not null
    and left(right(t1.new_zhaiyao,2),1)<>'支' and t1.new_zhaiyao<>'' and datepart(year,t1.new_Date) = (Select year(CONVERT(varchar(100), GETDATE(), 0)))
    group by  isnull(t1.new_zhaiyao,t2.new_owener) 
    order by sum(case when t2.new_owener is null then 0 else 1 end) desc
    这是我改过的 哥们 还有一个问题 就是 如果有发表数就按发表数排序 如果发表数为0的 就按他的投稿数排序 请问怎么改啊 我改了一下 不行啊 你这个 sql 语句我基本不敢改了 不太会啊 谢谢了 再帮我看看
      

  12.   

    select  isnull(t1.new_zhaiyao,t2.new_owener) as 投稿者,
    sum(case when t1.new_zhaiyao is null then 0 else 1 end) as 投稿数量,
    sum(case when t2.new_owener is null then 0 else 1 end) as 发表数量
    from [dbo].[HrbWeb_newsRecord] t1 full join [dbo].[HrbWeb_newsRecord] t2
    on t1.new_zhaiyao=t2.new_owener 
    where t1.new_zhaiyao is not null
    and left(right(t1.new_zhaiyao,2),1)<>'支' and t1.new_zhaiyao<>'' and datepart(year,t1.new_Date) = (Select year(CONVERT(varchar(100), GETDATE(), 0)))
    group by  isnull(t1.new_zhaiyao,t2.new_owener) 
    order by sum(case when t2.new_owener is null then 0 else 1 end) desc  ,投稿数量 desc
    这样好像就可以了 
      

  13.   

    分支单位发表的记录 和 投稿的记录 不是同一条记录, 也就是说 分支单位在投稿栏目里投稿 我也在后台的投稿栏目查看投稿记录 然后 感觉可以发表的就发表, 而且发表不一定在其他那个栏目里 可能在a 栏目也可能在b栏目 区分就是 投稿人单位new_zhaiyao 字段,此时new_owener 为空 如果发表了发表单位就是刚才的new_owener 此记录new_zhaiyao 为空   可能是我以前没说清楚 还请多多帮忙 这次说明白了吧 不行就再加分 辛苦各位大虾了 谢谢
      

  14.   

    15907 858 qwerqwer qwerqwer eqerqwe 2010-5-10 11:34:07 3 0 0 1 1 2010-5-10 11:34:07 1 0 齐齐哈尔
    15908 845 qwerqwer werqwerqwerqe admin 2010-5-10 11:38:31 1 0 0 1 0 齐齐哈尔 2010-5-10 11:38:21 qwerqwer 1 0 字段太多不知道大家是否能看清楚啊 
      

  15.   

    http://www.qrjysl.com/11.jpg
    这是我的部分数据 请大家帮忙 按照现在的数据 齐齐哈尔投稿三个 发表两个 农垦和鸡西都是投稿一个 发表一个 其他地市 有投稿没有发表 new_zhaiyao里 没有内容的 是其他栏目的