请教一个SQL查询方面的问题

天狼武士 2009-02-16 03:35:55
请问大家一个问题!我表T1里面有一个字段ITEM1,还有个记录时间的字段D1,我想查询的条件是每个月Item1的总和和最大值就是先统计每个月的Item1的总和,然后再统计他们的最大值,请问一条SQL语句能办到吗?谢谢!
...全文
157 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
天狼武士 2009-02-16
  • 打赏
  • 举报
回复
OK!结贴给分!
dawugui 2009-02-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 skywolfkun 的回复:]
貌似没用吗!呵呵!
[/Quote]
方法如9楼的方法,你具体的情况得自己处理了.
天狼武士 2009-02-16
  • 打赏
  • 举报
回复
貌似没用吗!呵呵!
dawugui 2009-02-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 skywolfkun 的回复:]
顺便再问一下!如果想求最小值的话那怎么办呢?
[/Quote]

create table t1(Item1 int,  D1 datetime)
insert into t1 values(1 , '2009-1-1')
insert into t1 values(2 , '2009-1-2')
insert into t1 values(3 , '2009-1-3')
insert into t1 values(4 , '2009-2-1')
insert into t1 values(1 , '2009-2-2')
go
--1只查最大月份
select top 1 convert(varchar(7),d1,120) d1, sum(item1) item1 from t1 group by convert(varchar(7),d1,120) order by item1 desc
/*
d1 item1
------- -----------
2009-01 6

(所影响的行数为 1 行)
*/

--2只查最小月份
select top 1 convert(varchar(7),d1,120) d1, sum(item1) item1 from t1 group by convert(varchar(7),d1,120) order by item1
/*
d1 item1
------- -----------
2009-02 5

(所影响的行数为 1 行)
*/


--3先查各月份,然后再加上最大最小月份的记录
select top 100 percent * from (select convert(varchar(7),d1,120) d1, sum(item1) item1 from t1 group by convert(varchar(7),d1,120)) t
union all
select top 100 percent * from (select top 1 convert(varchar(7),d1,120) d1, sum(item1) item1 from t1 group by convert(varchar(7),d1,120) order by item1 desc) t
union all
select top 100 percent * from (select top 1 convert(varchar(7),d1,120) d1, sum(item1) item1 from t1 group by convert(varchar(7),d1,120) order by item1) t
/*
d1 item1
------- -----------
2009-01 6
2009-02 5
2009-01 6
2009-02 5

(所影响的行数为 4 行)
*/

drop table t1
天狼武士 2009-02-16
  • 打赏
  • 举报
回复
顺便再问一下!如果想求最小值的话那怎么办呢?
dawugui 2009-02-16
  • 打赏
  • 举报
回复
create table t1(Item1 int,  D1 datetime)
insert into t1 values(1 , '2009-1-1')
insert into t1 values(2 , '2009-1-2')
insert into t1 values(3 , '2009-1-3')
insert into t1 values(4 , '2009-2-1')
insert into t1 values(1 , '2009-2-2')
go
--1只查最大月份
select top 1 convert(varchar(7),d1,120) d1, sum(item1) item1 from t1 group by convert(varchar(7),d1,120) order by item1 desc
/*
d1 item1
------- -----------
2009-01 6

(所影响的行数为 1 行)
*/

--2,先查各月份,然后再加上最大月份的记录
select top 100 percent * from (select convert(varchar(7),d1,120) d1, sum(item1) item1 from t1 group by convert(varchar(7),d1,120)) t
union all
select top 100 percent * from (select top 1 convert(varchar(7),d1,120) d1, sum(item1) item1 from t1 group by convert(varchar(7),d1,120) order by item1 desc) t
/*
d1 item1
------- -----------
2009-01 6
2009-02 5
2009-01 6

(所影响的行数为 3 行)
*/

drop table t1
dawugui 2009-02-16
  • 打赏
  • 举报
回复
create table t1(Item1 int,  D1 datetime)
insert into t1 values(1 , '2009-1-1')
insert into t1 values(2 , '2009-1-2')
insert into t1 values(3 , '2009-1-3')
insert into t1 values(4 , '2009-2-1')
insert into t1 values(1 , '2009-2-2')
go

select top 1 convert(varchar(7),d1,120) d1, sum(item1) item1 from t1 group by convert(varchar(7),d1,120) order by item1 desc

drop table t1

/*
d1 item1
------- -----------
2009-01 6

(所影响的行数为 1 行)
*/
天狼武士 2009-02-16
  • 打赏
  • 举报
回复
这样不行啊!不能对包含聚合或子查询的表达式执行聚合函数。
dawugui 2009-02-16
  • 打赏
  • 举报
回复
select top 100 percent * from (select convert(varchar(7),d1,120) , sum(item1) item1 from t1 group by convert(varchar(7),d1,120)) t
union all
select top 100 percnt * from (select top 1 convert(varchar(7),d1,120) , sum(item1) item1 from t1 group by convert(varchar(7),d1,120) order by item1 desc) t
ks_reny 2009-02-16
  • 打赏
  • 举报
回复

Select max(sum(item1)) From T1
group by convert(varchar(7),time,120)
天狼武士 2009-02-16
  • 打赏
  • 举报
回复
你貌似没有看懂我的意思!是这样的:
比如表里面有这些数据:
Item1 D1
1 2009-1-1
2 2009-1-2
3 2009-1-3
4 2009-2-1
1 2009-2-2
然后我想获得的结果是6!就是两个月份的Item1的总和的最大的一个!
中国风 2009-02-16
  • 打赏
  • 举报
回复
select [month]=convert(varchar(7),time,120),[con]=count(Item),[max]=max(time) from table group by convert(varchar(7),time,120)

34,873

社区成员

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

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