当前位置:首页 » 编程语言 » sql分组按顺序拼接
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql分组按顺序拼接

发布时间: 2022-09-02 20:33:35

sql语句 按一列分组 然后再按别一列组内排序

sql 按 group 单纯的对unitname 分组查询后 是 "统计数据" ,不存在组内情况,并不会带有 voucherID,不能排序,对 voucherID 的排序也是无意义。

或者说你按 unitname、voucherID 俩个分组,然后 按voucherID 排序,这个是可以实现的。

⑵ SQL 分组统计并排序

group
by语句必须和聚合函数一起使用.
select
c,max(d)
from
a
group
by
c
order
by
max(d)
desc
这样子可以.
因为一条select语句只可以返回一个结果集...
此句返回按c分组后并按每组中最大的d值进行排序.

⑶ sql 分组后怎么把结果合并到一个类别下啊

--如果商品和类别在同一个表
--建表
CreateTableT
(
商品Varchar(10),
类别Varchar(10),
数量Int
)

--插入数据
InsertIntoTValues('苹果','水果',10)
InsertIntoTValues('葡萄','水果',20)
InsertIntoTValues('西红柿','蔬菜',30)

--方法一,按商品类别分类求和,加withcube选项
SelectISNULL(商品,'分类-'+类别)As商品,数量
From(
Select商品,类别,SUM(数量)As数量FromT
GroupBy商品,类别
WithCube
)S
Where类别IsNotNull

--方法二,按商品和类别分别汇总后合拼在一起,然后排序
Select商品,数量
From(
Select商品,Max(类别)As类别,SUM(数量)As数量FromT
GroupBy商品
UnionAll
Select'分类-'+类别,类别+'Z',SUM(数量)As数量FromT
GroupBy类别
)S
OrderBy类别

--如果没有类别,需要先建一个对照表
--建表
CreateTableM
(
商品Varchar(10),
类别Varchar(10)
)
CreateTableN
(
商品Varchar(10),
数量Int
)

--插入数据
InsertIntoMValues('苹果','水果')
InsertIntoMValues('葡萄','水果')
InsertIntoMValues('西红柿','蔬菜')
InsertIntoNValues('苹果',10)
InsertIntoNValues('葡萄',20)
InsertIntoNValues('西红柿',30)
InsertIntoNValues('苹果',15)

--查询
SelectIsNull(商品,'分类-'+类别)As商品,数量
From(
Selectn.商品,类别,SUM(数量)As数量FromnLeftJoinm
onm.商品=n.商品
GroupByn.商品,类别
WithCube
)s
Where类别isnotnull

⑷ sql 分组和排序

如果是SQLServer 2005以上可以这样写
select 学生ID、课程编号、成绩 from
(select 学生ID、课程编号、成绩 ,row_number(partition by 课程编号 order by 课程编号,成绩)as rn from student) as T where rn <=2 order by 课程编号、成绩

⑸ sql分组排序

group by语句必须和聚合函数一起使用.
select c,max(d) from a group by c order by max(d) desc
这样子可以.
因为一条SELECT语句只可以返回一个结果集...
此句返回按c分组后并按每组中最大的d值进行排序.

⑹ SQL如何分类后顺序连接字串

----以下在sql2005测试通过。

create table table1(bm varchar(10),ry varchar(10),mas varchar(10))
insert table1
select 'org1','sta1','mas' union all
select 'org1','sta2','' union all
select 'org1','sta3','' union all
select 'org2','sta4','mas' union all
select 'org2','sta5',''

---以前就回答过这样的问题了,给你2个参考方案:
--实现方式1、利用函数
--分析,可以按照ID进行分组,然后对每个ID的value进行函数合并。
if object_id(N'dbo.f_str',N'FN') is not null
drop function dbo.f_str
go
CREATE FUNCTION dbo.f_str(@bm varchar(10))
RETURNS varchar(1000)
AS
BEGIN
DECLARE @r varchar(1000)
SELECT @r = isnull(@r+';','')+ry FROM table1 WHERE bm=@bm
RETURN @r
END
GO
-- 调用函数
select * from(select bm,mas from table1 where (mas<>'' and not mas is null))t1
outer apply
(
SELECt [ry] = dbo.f_str(bm) FROM table1 where t1.bm=bm group by bm
)t2

--实现方式2、利用group by和for XML
--利用for XML构造每个ID的vlaue合并,然后和ID列进行合并
--这里只是用了group by进行分组
select * from(select bm,mas from table1 where (mas<>'' and not mas is null))t1
outer apply
(select [ry]=stuff((select ';'+ry from table1 where bm=t2.bm for xml path('')), 1, 1, '')
from table1 t2 where t1.bm=bm
group by bm
)t3

--楼主满意了没。

⑺ SQL分组汇总排序

华子,我来看你.....

⑻ sql 分组排序

没有计算机理解的顺序,必需构造一个表示顺序的函数。完整的实现语句如下:

select *,
case check_id
when 4 then 1
when 2 then 2
else check_id*10
end as def_order
from 表 order by def_order,idate

这里用CASE函数定义一个新的顺序,如果check_id=4,新的排序号为1;如果check_id=2,新的排序号为2;如果check_id为其它,新的排序号为check_id*10,这样能满足要求的顺序。

楼上的兄弟的解决方案,从理论上不能保证满足要求,因为查询输出记录的顺序不一定是记录输入表的顺序。

⑼ sql按顺序分成三组

sql分组使用groupby语法。
groupby是sql中比较强大的功能,是在对数据分组统计时必不可少的用法。但是,对于很多经验不足的同学,经常会写错。

⑽ sql 如何分组排序同时进行

1、首先输入代码:

SELECT * FROM (select * from CJ where Gender='女') m

where( select COUNT(*) from (select * from CJ where Gender='女') n

where m.Classid = n.Classid and n.English > m.English)<2

order by Classid, English desc

2、然后再输入代码:

SELECT * FROM CJ m

where(

select COUNT(*) from CJ n

where m.Classid = n.Classid and n.English > m.English and n.Gender='女')<2 --指的是内表

and Gender='女' --指的是外表

order by Classid, English desc