高手请进!sql查询语句:使用order by sum(字段) 和 split的问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 14:19:10
我想要的结果是这样的:
我有表A: 里面有字段:
字段1,字段2,字段3
a 1 6
a 3 4
a 5 6
b 7 2
b 1 6
c 8 6
c 9 6
我想要用一条sql语句分组a b c 三个类别 并查出每一组字段2*字段3最大的数,还有将a b c 三组里所有的字段2*字段3相加 然后以它为依据排出a b c 三组的排序.
还有如何在一个字段值为1|2|3|4 里娶出被|分离的第某个数??可以用split吗?谢谢!!!
jixingfei1 不好意思 我没分!20分已经是我全部家当了.呵呵 可以的话帮个忙 帮忙想下.我很急! 谢谢!

sql数据库!谢谢!其实我是想sum(1|2|3|4 里娶出被|分离的第某个数)

WHITE_WIN 谢谢! 我试了下你的mysplit 函数 可以用 但我要sum(1|2|3|4 里娶出被|分离的第某个数) 要怎么写呢?还有里面的1|2|3|4都是调用数据库里的内容的.呵呵

可以了:
select DBO.mysplit((select * shipcity from orders),3,'|')

第一个问题:
可以用聚合函数的表达式排序,也可以给聚合函数取个另名来排序
select 字段1,max(字段2*字段3) as a,sum(字段2*字段3) as b from 表A ORDER BY B

第二个问题:
在SQL SERVER中 SPLIT不能用于分离字符串.
可以写个自定义函数,用来按某分隔符和顺序号提取字串.

字串拆分函数脚本:
create FUNCTION mysplit
(@str nvarchar(2000),--要拆分的源字符串
@sn int, --要分离出的子串的序号.
@Deli varchar(1))--分隔符
RETURNS varchar(100)
AS
BEGIN
declare @first int,@last int,@result varchar(1000),@sn0 int
select @sn0=0,@first=0,@LAST=1,@str=@str+REPLICATE(@DELI,5)
while @sn0!=@sn
begin
select @sn0=@sn0+1,@first=@LAST,@last=charindex(@DELI,@str,@LAST)+1
end
SET @RESULT=SUBSTRING(@str,@FIRST,@LAST-@FIRST-1)

RETURN ( @RESULT )

END

GO

字串拆分函数使用方法举例:
select DBO.mysplit('ABC|DEF|GHIJ|KLM|NOP|',3,'|')
输出:
GHIJ

这么多问题 给这一点分 很累

分有点少,问题太多,只回答第一个问题

SELECT MAX(字段2*字段3),字段1 GROUP BY 字段1

什么数据库