当前位置:首页 » 编程语言 » sql多行数据合并
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql多行数据合并

发布时间: 2022-01-24 18:04:45

1. sql 多行数据合并成一行

group by 前面相同的字段,后面不同的,用max取。
SELECT m.member_id,
prefix_desc 'Prefix:',
UPPER(first_name) 'First Name:',
UPPER(last_name) 'Last Name:',
UPPER(email) 'Email:',
LOWER(user_id) 'User ID:',
REPLICATE('*',LEN(password)) 'Password:',
('****'+SUBSTRING(license_no,5,4)) 'Drivers Licese Number:',
REPLACE(email_ind,'Y','Accept') 'Email notification:',
REPLACE(return_ind,'Y','Accept') 'HERIZ E-RETURN',
max(CASE WHEN tel_type= 'B' THEN tel_number END + ' '+REPLACE(pref_phone_ind,'P','PREF')) 'Business Phone',
max('('+ p.country_code + ')'+ CASE WHEN tel_type= 'M' THEN tel_number END) 'Mobile Number',
max(CASE WHEN tel_type= 'F' THEN tel_number END) 'Fax'
FROM MEMBER m, license l, phone_fax p
WHERE m.member_id = l.member_id
AND m.member_id = p.member_id
AND m.member_id = 'A000001'
group by
m.member_id,
prefix_desc 'Prefix:',
UPPER(first_name) 'First Name:',
UPPER(last_name) 'Last Name:',
UPPER(email) 'Email:',
LOWER(user_id) 'User ID:',
REPLICATE('*',LEN(password)) 'Password:',
('****'+SUBSTRING(license_no,5,4)) 'Drivers Licese Number:',
REPLACE(email_ind,'Y','Accept') 'Email notification:',
REPLACE(return_ind,'Y','Accept') 'HERIZ E-RETURN'

2. sql语句如何合并相同id下的多行数据在一行 例如:

select id,
max(case when rn = 1 then op end ) op_1,
max(case wehn rn = 1 then result end ) result_1,
max(case when rn = 1 then else end ) else_1,
max(case when rn = 2 then op end ) op_2,
max(case wehn rn = 2 then result end ) result_2,
max(case when rn = 2 then else end ) else_2
from (
select a.*,
row_number() over(partition by id order by else) rn
from a)
group by id;

3. SQL怎么把多条数据合并成一条数据

把多条数据合并成一条数据的代码:

select sum(case when wgrp_id='2' then quota end) w2, sum(case when wgrp_id='3' ;then quota end) w3, mm;
from table;
group by mm。

SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

SQL语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言作为数据输入与管理的接口。SQL语言语句可以嵌套,这使他具有极大的灵活性和强大的功能。

应用信息:

结构化查询语言SQL(STRUCTURED QUERY LANGUAGE)是最重要的关系数据库操作语言,并且它的影响已经超出数据库领域,得到其他领域的重视和采用,如人工智能领域的数据检索,第四代软件开发工具中嵌入SQL的语言等。

支持标准:

SQL 是1986年10 月由美国国家标准局(ANSI)通过的数据库语言美国标准,接着,国际标准化组织(ISO)颁布了SQL正式国际标准。1989年4月,ISO提出了具有完整性特征的SQL89标准,1992年11月又公布了SQL92标准,在此标准中,把数据库分为三个级别:基本集、标准集和完全集。

4. sql将多行数据根据同一个关键值合并

不知道你什么数据库,oracle10g以上可以
with t1 as(
select 'A' id, 'XX' name union all
select 'A' ,'YY' union all
select 'A' ,'ZZ' union all
select 'B' ,'XY' union all
select 'B' ,'XZ'
)
select id,replace(wmwm_concat(name),',','')
from t1
group by id

--结果
A XXYYZZ
B XYXZ

5. SQL多行合并为一行,SQL语句如何写

selectid,max(语文)语文,max(数学)数学,max(英语)英语
fromtab
groupbyid

6. SQL实现多行数据合并为一行

select a,b max(c),max(d)...,max(j) from t group by a,b

7. sql语句能否实现两行数据合并

select店名,
sum(1月)as1月,
sum(2月)as2月,
sum(3月)as3月,
sum(4月)as4月,
sum(5月)as5月
from(select*fromtable1unionallselect*fromtable2)a
groupby店名

有问题追问

8. SQL 将属于同一个ID下的多行数据合并到一行

selectid,sum(isnull(data1,0))data1,sum(isnull(data2,0))data2from表1groupbyid

sqlserver写法,其他数据库略有不同

9. sql带条件多条数据合并为一条数据并换行

修正现在的表添加一个唯一的标识
先按条件分组,统计两个关键的内容
数量:大于1的时需要删除的
max或min的标识: 用于删除得行标识
delete from 表where id in(
slect id ,count(*) ,max(id) from 表 groupby id
having count(*)>1
)
如果有大于2的重复记录,需要在写循环删除

10. sql查询时如何合并两行数据,具体如下。

看样子像sqlserver,就按sqlserver的写了

创建测试表,数据:

createtabletest
(requestidint,
logidint,
operatedatevarchar(10),
operatetimevarchar(10),
operatorint);


insertintotestvalues(502,1372,'2018-06-13','16:16:03',155);
insertintotestvalues(502,1446,'2018-06-14','09:00:32',153);
insertintotestvalues(502,1472,'2018-06-14','09:33:07',157);
insertintotestvalues(502,1474,'2018-06-14','09:35:11',151);
insertintotestvalues(502,1657,'2018-06-14','15:17:10',153);
insertintotestvalues(502,1660,'2018-06-14','15:18:17',155);
insertintotestvalues(502,1661,'2018-06-14','15:19:01',153);
insertintotestvalues(502,1662,'2018-06-14','15:19:48',157);
insertintotestvalues(502,1677,'2018-06-14','15:31:34',151);
insertintotestvalues(502,1694,'2018-06-14','16:42:51',12);
insertintotestvalues(502,1709,'2018-06-14','18:08:45',9);
insertintotestvalues(502,1730,'2018-06-15','08:09:14',158);
insertintotestvalues(502,1732,'2018-06-15','08:09:16',157);

执行:

withtas
(selecttest.*,row_number()over()rnfromtest)
selectt1.requestid,t1.logid,cast(t1.operatedate+''+t1.operatetimeasdatetime)begintime,cast(t2.operatedate+''+t2.operatetimeasdatetime)endtime,t1..requestid=t2.requestidandt1.rn=t2.rn+1

查询结果:

最后时间没按你那种方式显示,你那种到时候算操作时间也麻烦,还不如改成时间日期类型了。