请教一个复杂查询问题

TaskID 2005-04-25 04:29:13
一个表有以下字段和数据,每一条记录是一篇稿件的数据

通讯员编号 稿费
001 100
002 200
003 300
001 100
002 200
003 300


我想得到以下数据

通讯员编号 稿费总和 稿件数
001 200 2
002 400 2
003 600 2
...全文
87 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
TaskID 2005-04-26
  • 打赏
  • 举报
回复
Select Author.author_aid,Author.author_name,(Select SUM(amount) from Opus Where Opus.author_id=Author.author_aid And Convert(Varchar(7),Opus.pubdate,120)='2000-10') As 稿费总和,(Select IsNull(Count(*),0) from Opus Where Opus.author_id=Author.author_aid And Convert(Varchar(7),Opus.pubdate,120)='2000-10') As 稿件数
from Author

再试,这样的话能满足的要求,可就是有一点,如果通讯员10月份没有稿费的话,它也会统计出来,稿费总和为NULL,稿件数为0,如果能把这个也过滤掉就完美啦

如果我再得寸进尺的话我还要增加
个人所得税 汇费 实际稿费 三个字段

然后:
若稿费总数<800元,则不计;
若稿费总数>=800元,个人所得税为:稿费总数-800)*14%

实际稿费=稿费总数-个人所得税

实际稿费<200元,汇费按2元计;
实际稿费>=200元,汇费按实际稿费*1%计


大侠们请好人帮到底好吗?
guomengran_1979 2005-04-25
  • 打赏
  • 举报
回复
select 通讯员编号 ,sum(稿费) as '稿费总和', count(通讯员编号) as '稿件数'
from 表名
group by 通讯员编号

先试试,不成在叫我!
paoluo 2005-04-25
  • 打赏
  • 举报
回复

Select
A.*,
(Select SUM(稿费总和) from 表2 Where 通讯员编号=A.通讯员编号 And Convert(Varchar(7),见报日期,120)='2000-10') As 稿费总和,
(Select IsNull(Count(*),0) from 表2 Where 通讯员编号=A.通讯员编号 And Convert(Varchar(7),见报日期,120)='2000-10') As 稿件数
from 表1 A
TaskID 2005-04-25
  • 打赏
  • 举报
回复
后面加条件 right(rtrim('2005-10') ,2)=10
在哪里加?这句完整怎么写嘛?
lin_now 2005-04-25
  • 打赏
  • 举报
回复
但是只有一个表示年月的字符串"2000-10",然后得到以下数据

后面加条件 right(rtrim('2005-10') ,2)=10
paoluo 2005-04-25
  • 打赏
  • 举报
回复

假设两表为表1,表2

Select
A.*,
(Select SUM(稿费总和) from 表2 Where 通讯员编号=A.通讯员编号) As 稿费总和,
(Select IsNull(Count(*),0) from 表2 Where 通讯员编号=A.通讯员编号) As 稿件数
from 表1 A
TaskID 2005-04-25
  • 打赏
  • 举报
回复
不是这么简单,其实是这样的:

一个表有以下字段和数据,每一条记录是一篇稿件的数据

通讯员编号 稿费 见报日期(DATATIME)
001 100 2000-10-10 00:34:23
002 200 2000-10-10 00:49:59
003 300 2000-10-15 10:15:15
001 100 2000-10-28 01:01:01
002 200 2000-10-12 12:12:12
003 300 2000-10-11 11:11:11

另一张表有如下字段和数据
通讯员编号 姓名
001 张一
002 张二
003 张三

我想得到2000年10月份的汇总,但是只有一个表示年月的字符串"2000-10",然后得到以下数据

通讯员编号 姓名 稿费总和 稿件数
001 张一 200 2
002 张二 400 2
003 张三 600 2
柯柯 2005-04-25
  • 打赏
  • 举报
回复
这也算复杂??????

简单的分组查询而已~~~~ 汗
梅青松 2005-04-25
  • 打赏
  • 举报
回复
--建立测试环境
Create Table 表(通讯员编号 varchar(10),稿费 int)
--插入数据
insert into 表
select '001',100 union all
select '002',200 union all
select '003',300 union all
select '001',100 union all
select '002',200 union all
select '003','300'
select * from 表
--测试语句
select 通讯员编号, 稿费总和 = Sum(稿费), 稿件数 = count(*)
from 表
group by 通讯员编号

--删除测试环境
Drop Table 表

--结果
001 200 2
002 400 2
003 600 2

paoluo 2005-04-25
  • 打赏
  • 举报
回复

Select
通讯员编号,
SUM(稿费) As 稿费总和,
Count(*) As 稿件数
from 表
Group By 通讯员编号

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧