SQL问题一则(50分)

  • 主题发起人 主题发起人 wangyang_1031
  • 开始时间 开始时间
W

wangyang_1031

Unregistered / Unconfirmed
GUEST, unregistred user!
现有表1如下:
字段1 字段2 字段3 字段4 字段5
ABC 1 1000 1 200
ABC 1 1000 201 500
AB 1 1000 1 500
AB 1 1000 501 1000
ABC 1 1000 501 800
ABC 1 1000 801 1000
想要得到表2:
字段1 字段2 字段3 字段4 字段5
ABC 1 1000 1 1000
AB 1 1000 1 1000
请问如何用SQL语句实现.先谢了
 
select 字段1,字段2,字段3,字段4,sum(字段5)
from 表1
Group by 字段1,字段2,字段3,字段4
 
select 字段1,字段2,字段3,MIn(字段4),Max(字段5)
from 表1
Group by 字段1
 
同意decade
 
to up:
不应该是这么简单的。上面的只是特殊情况的一种处理方法。

to :wangyang_1031:

不是很清楚你的意思。你是不是想得到这样的结果:
字段1 的 字段5为表中的 字段4 为最大值时的 字段5 的值,
同时其 字段4为表中 字段5 为最小值时的 字段4的值。如果是这样。
select 字段1,字段2,字段3,表2.a 字段4,表3.b 字段5
from 表1,
(select min(字段4) a from 表1 where 字段5=max(字段5) group by 字段1) as 表2,
(select max(字段5) b from 表1 where 字段4=min(字段4) group by 字段1) as 表3
where 表1.字段1=表2.字段1 and 表2.字段1=表3.字段1
Group by 字段1

 
这楼主的问题提的可真够怪的!
还让DFW们来分析总结他的需求!
 
我同意pcc_mmzl的意见,我想要实现使用该使用字查询的。
因为有的字段是不能直接通过group by得到
 
pcc_mmzl的意見是可行的
 
select distinct 字段1,
(select min(字段2) from 表1 where 字段1=AAA.字段1) as 字段2
(select avg(字段3) from 表1 where 字段1=AAA.字段1) as 字段3
(select min(字段4) from 表1 where 字段1=AAA.字段1) as 字段4
(select sum(字段5) from 表1 where 字段1=AAA.字段1) as 字段5
from 表1 AAA
order by 字段1

字段2 取最小值
字段3 取平均值
字段4 取最小值
字段5 取和

想要什么效果,自己改一下吧
不支持paradox
 
You ought to give you integral to all who help you
 
select f1, avg(f2) as af2, avg(f3) as af3, min(f4) as af4, max(f5) as af5 from test2 group by f1

SQL SERVER 2000下验证通过。
 
select 字段1,字段2,字段3,MIn(字段4),Max(字段5)
from 表1
Group by 字段1
 
select distinct 字段1,字段2,字段3,MIn(字段4),Max(字段5)
from 表1 Group by 字段1
 
同意MikeZ的意见
 
不明白你要达到什么效果!
 
真的有这种实际需求吗?如果是,我建议wangyang_1031同仁修改数据库结构,
最好符合范式三以上.
 
多人接受答案了。
 
后退
顶部