我有这样一个表
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 这个字段里存的是 投稿者 这就是说投稿者投的记录不一定都发表
我怎么同时算出 所有投稿者 投稿数量 和发表数量 然后按照发表数由高到低的 年度排名 请问怎么写?谢谢!!
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 这个字段里存的是 投稿者 这就是说投稿者投的记录不一定都发表
我怎么同时算出 所有投稿者 投稿数量 和发表数量 然后按照发表数由高到低的 年度排名 请问怎么写?谢谢!!
from [dbo].[HrbWeb_newsRecord]
group by new_owener
我怎么同时算出 所有投稿者 投稿数量 和发表数量 然后按照发表数由高到低的 年度排名 请问怎么写?select new_zhaiyao ,sum(投稿数量) 投稿数量,sum(发表数量) 发表数量
from [dbo].[HrbWeb_newsRecord]
group by new_zhaiyao
order by 发表数量 desc粗略猜测,要更加详细请提供测试数据和想要的结果。
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
(永生,永是永生的永,生是永生的) 楼上的哥们还在吗 我这个问题隔了好几天了 不好意思啊 !!家里有事回家了 我看了一下你的语句写的很好
但是我现在还想加上 这两个条件 请问怎么加呢?
left(right(new_zhaiyao,2),1)<>'支' and datepart(year,HrbWeb_newsRecord.new_Date) = 当前年份请明示 上面的语句写的很好 谢谢了 再帮帮忙 !!
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
其他的结果 和排序 都是对的 谢谢了 再帮我看看 实在迷糊了 谢谢了!!
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
三支队 0 76
一支队 0 40
四支队 0 26
五支队 0 10
齐齐哈尔 1 1
绥化 1 1
黑河 1 1
大兴安岭 1 0
牡丹江 1 0
农垦 1 0
NULL 0 0 楼上的哥们 首先很感谢你 但是你的语句执行完了以后 是上面的效果
不应该有 null 一行 和 上面的 带有“支”字的行 谢谢 再帮我看看
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
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 语句我基本不敢改了 不太会啊 谢谢了 再帮我看看
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
这样好像就可以了
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 字段太多不知道大家是否能看清楚啊
这是我的部分数据 请大家帮忙 按照现在的数据 齐齐哈尔投稿三个 发表两个 农垦和鸡西都是投稿一个 发表一个 其他地市 有投稿没有发表 new_zhaiyao里 没有内容的 是其他栏目的