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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL怎么把多条数据合并成一条数据?相关的知识,希望对你有一定的参考价值。

变成
1.000000 1.000000 2013/09
0.933333 1.000000 2013/10

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

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标准,在此标准中,把数据库分为三个级别:基本集、标准集和完全集。

参考技术A SELECT a.QUOTA,b.QUOTA,a.MM FROM 表 a join 表 b on (a.MM=b.MM and a.WGRP_ID=2 and b.WGRP_ID=3)

参考技术B select b.Q, c.Q, a.MM
from (select distinct MM from thetable) as a
left join (select QUOTA as Q , MM from thetable where MM=a.MM and WGRP_ID=2) as b on
b.MM = a.MM

left join (select QUOTA as Q , MM from thetable where MM=a.MM and WGRP_ID=3) as c on
c.MM = a.MM
参考技术C 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如何按条件把相同记录合并成一条记录?

单号 金额
001 10
001 20
002 20
结果
单号 金额1 金额2
001 10 20
002 20 null

楼主要实现的是金额动态列吧! 动态列的实现一般可以用两部来实现,第一步拼接group 出SQL,第二步拼接sql  ,比如楼主的需求可以这样来实现

1: select 'sum (case when 金额 = '' '金额' '' then 金额 else 0 end) ' from 数据表 group by 金额

2: 将上面的结果字符 用程序处理并拼接起来,可以得到,拼接后的结果如下:

select 单号 ,sum (case when 金额 = 金额1 then 金额 else 0 end) as 金额1 ,
sum (case when 金额 = 金额2 then 金额 else 0 end) as 金额2
from 数据表 group by 单号追问

怎么用程序处理并接? 存储过程?

追答

用程序处理吧! 第一步查出来后,用list接收,再循环拼成SQL,然后原样传入到第二步当中就可以了!

追问

我不用能程序啊 只能用数据库脚本 本来想用视图实现 莫非现在要用存储过程

参考技术A SELECT id,
  MAX(DECODE(money,10,money,NULL)) "10",
  MAX(DECODE(money,20,money,NULL)) "20"
FROM t
GROUP BY id ;

追问

单号会有多条相同记录 但金额不固定的 还有可能有小数位

追答

单号-金额-数量 不是更好?

追问

我就是要实现金额并排的效果啊

追答select id,wmsys.wm_concat( money) from t group by id;

参考技术B 是mssql 嘛?

追问

是的

追答我有个笨方法,可以试一下。就是太麻烦啦!
with cte as(
select 单号,(row_number()over(partition by 单号 order by 金额)) as seqno from 表
)
select 单号, 
(select 金额 from cte where 单号 = c1.单号 and seqno = 1) as 金额1,
(select 金额 from cte where 单号 = c1.单号 and seqno = 2) as 金额2
from cte as c1 group by 

因为每个单号 有多个金额,这儿需要动态生成查询语句。所以这种办法很死。效果也不太好!

参考技术C 去掉从复的?

以上是关于SQL怎么把多条数据合并成一条数据?的主要内容,如果未能解决你的问题,请参考以下文章

sql内多条数据合并为一条

求助:SQLSERVER多条查询语句合并

arcgis中如何把重叠面的部分合并成一个面???感谢

mysql数据库查询的多条结果如何合并成一条?

如何用sql语句将多行合并成一行

把俩条MySQL语句合并成一条