① sql 分组统计,再合并组
select 组名2 as 组名, 产品2 as 产品,sum(数量) as 数量
from
(select case when 组名 = 'A1' then 'A' when 组名 = 'B1' then 'B' else 组名 end as 组名2,case when 组名 = 'A1' then 'aa' when 组名 = 'B1' then 'bb' else 产品 end as 产品2 ,数量
from 表
) tb
group by 组名2, 产品2
② sql group by 之后 如何合并分组的文本
db2
/
oracle
/sql
server
2005以上,可以这样做
SELECT
姓名,
MAX(CASE
RK
WHEN
1
THEN
内容
ELSE
''
END)
||MAX(CASE
RK
WHEN
2
THEN
内容
ELSE
''
END)
||MAX(CASE
RK
WHEN
3
THEN
内容
ELSE
''
END)
||MAX(CASE
RK
WHEN
4
THEN
内容
ELSE
''
END)
FROM
(SELECT
姓名,
内容,
ROW_NUMBER()
OVER(PARTITION
BY
姓名
ORDER
BY
内容)
rk
FROM
tab)
t
GROUP
BY
姓名
③ 1、sql查询语句时怎么把几个字段拼接成一个字段这几个字段是整型的。
1、语句如下:
select 字段A, 字段B, 字段A + 字段B as 字段C From 表1
注:字段A加上字段B的计算列命名为字段C
2、计算列
计算列由可以使用同一表中的其他列的表达式计算得来。表达式可以是非计算列的列名、常量、函数,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为子查询。
原题的答案就是“计算列”。
(3)sql分组后如何拼接扩展阅读:
计算列应用范围
计算列可用于选择列表、WHERE 子句、ORDER BY 子句或任何可使用正则表达式的其他位置,但下列情况除外:
用作 CHECK、FOREIGN KEY 或 NOT NULL 约束的计算列必须标记为 PERSISTED。如果计算列的值由具有确定性的表达式定义,并且索引列中允许使用计算结果的数据类型,则可将该列用作索引中的键列,或者用作 PRIMARY KEY 或 UNIQUE 约束的一部分。
例如,如果表中含有整数列a和b,则可以对计算列a+b创建索引,但不能对计算列a+ DATEPART(dd,GETDATE()) 创建索引,因为在后续调用中,其值可能发生改变。
计算列不能作为 INSERT 或 UPDATE 语句的目标。
数据库引擎基于使用的表达式自动确定计算列的为 Null 性。即使只有非空列,大多数表达式的结果也“认为”可为空值,因为下溢或溢出生成的结果也可能为空。使用带AllowsNull属性的 COLUMNPROPERTY 函数可查明表中任何计算列的为 Null 性。
通过指定 ISNULL (check_expression,constant) 可以将可为空值的表达式转换为不可为空值的表达式,其中,constant是可替换所有空结果的非空值。
网络.计算列
④ SQL SERVER按照某列的某值进行分组统计数据
SELECT 学校名称,
语文平均分 = avg(语文),
语文及格率 = count(case when 语文>= 60 then 语文 else null end)/count(语文),
数学平均分 = avg(数学),
数学及格率 = count(case when 数学>= 60 then 数学 else null end)/count(数学)
from student
group by 学校名称
⑤ sql分组查询后合并符合条件的数据
可以把源表中为null 和‘’的先update一下,src都统一设置成‘’,如果是group by 以后合并,由于src不同,没法合并吧。因为要考虑合并后src的值
⑥ 多条sql语句如何拼接
SQL语句拼接一般使用【union all】和【union】
两者的区别是:
【union all】:显示多条语句里的全部记录;
【union】:显示多条语句里的不重复的记录,也就是有DIstinct的功效;
【union all】示例:
select'2016-02-06'date_timeunionall
select'2016-02-14'unionall
select'2016-06-12'unionall
select'2016-09-18'unionall
select'2016-10-09'unionall
select'2016-10-09'
结果为6行
【union】示例:
select'2016-02-06'date_timeunionall
select'2016-02-14'unionall
select'2016-06-12'unionall
select'2016-09-18'unionall
select'2016-10-09'unionall
select'2016-10-09'
结果为5行
⑦ 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
⑧ sqlserver 分组之后 拼接新字段 如下:
Select B.人员ID,B.人员名称,Left(TempInfo,LEN(TempInfo) - 1) AS 新字段 From
(Select 人员ID,人员名称,(Select 人员的儿女 + '-' + 儿女岁数 +',' From 人员 Where 人员ID = A.人员ID For XML Path('')) AS TempInfo
From 人员 A
Group By 人员ID,人员名称) B
这个就是你要的。
⑨ sqlserver 分组 拼接其他字段
SQL2005或以上才可以:
Declare
@t
Table
(
ID
int,
FName
varchar(20),
CName
varchar(20),
CAge
varchar(20)
)
Insert
Into
@t
select
1,'吴亮','吴1','3岁'
Union
select
1,'吴亮','吴2','5岁'
Union
select
1,'吴亮','吴3','9岁'
Union
select
4,'麦大伟','麦1','3岁'
Union
select
4,'麦大伟','麦2','5岁'
Union
select
6,'张思','张1','3岁'
下面是合并:
Select
ID,FName,CName=Stuff((Select
','+CName
From
@t
Where
ID=T.ID
For
xml
path('')),1,1,''),
CAge=Stuff((Select
','+CAge
From
@t
Where
ID=T.ID
For
xml
path('')),1,1,'')
From
@t
T
Group
by
id,FName