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

sql实现列数据重复时合并

发布时间: 2022-11-22 14:38:57

‘壹’ sql 列值相同合并行

--由于你是SQL Server2005 所以可以用一句话来实现 如下:
select a ,b=stuff((select ';'+rtrim(b) from tbName where k.a=a for xml path('')),1,1,'')
from tbName k

‘贰’ SQL 如何将一个表中的两条或多条拥有相同ID的记录合并为一条

一、创建表:

  • create table stuUnion

    (

    sid int identity primary key,

    cid int,

    id varchar(500)

    )

二、添加数据:

  • insert into stuUnion

    elect 1,'a' union

    select 1,'b' union

    select 2,'c' union

    select 2,'d' union

    select 3,'e' union

    select 3,'f' union

    select 3,'g'

三、用标量函数查询:

  1. 创建标量函数:

    create function b(@cid int)

    returns varchar(500)

    as

    begin

    declare @s varchar(500)

    select @s=isnull(@s+'','')+rtrim(id)+',' from stuUnion where cid=@cid

    return @s

    end;

  2. 用标量函数查询:

    select cid,dbo.b(cid) as id from stuUnion group by cid

  3. 用sqlserver的xml:

    select cid,ID=STUFF((select ' '+rtrim(id)+',' from stuUnion where st.cid=cid order by id for XML path('')),1,1,'') from stuUnion st group by cid

‘叁’ 合并重复 SQL

第一步查出的结果集允许它重复,效果如下
wnum suha
a 12
a 64
第二步以第一步的结果集,按wnum做group by 这样就可以得到你要的效果啦

‘肆’ SQL语句合并相同项

你的语句条件不完整,只用“年龄”关联B表是不够准确的,如果B表中有姓名,需要把姓名也加上,这样写:
select A.年龄,A.姓名 From A,B where A.姓名=B.姓名 and A.年龄=B.年龄;

如果B表中不存在“姓名”,并且A表中“年龄”,“姓名”组合唯一,那么语句改成如下写法就能避免重复,而且效率会高些。
select A.年龄,A.姓名 From A where exists (select 1 from B where A.年龄=B.年龄);

‘伍’ SQL 两张表合并 (两张表的列都相同)

可以参考下面的方法:

1、第一种,用一张临时表,把所有数据都放在一张表里

INSERT INTO QunList SELECT * FROM QunList89,90,91,92;

再在QunList中查询

2、第二种,用 UNION ALL方式查询

SELECT * FROM QunList89

UNION ALL

SELECT * FROM QunList90;

(5)sql实现列数据重复时合并扩展阅读:

SQL参考语句

删除表

drop table tabname--这是将表连同表中信息一起删除但是日志文件中会有记录

删除信息

delete from table_name-这是将表中信息删除但是会保留这个表

增加列

Alter table table_name add column_name column_type [default 默认值]--在表中增加一列,[]内的内容为可选项

‘陆’ sql合并重复数据并求和

***********************
根据你的补充补充回答:
***********************

select a,sum(b) as 记录数,max(c) as c
from 表名
group by a;

---
以上,希望对你有所帮助。

‘柒’ SQL如何将某一列中相同的数据合并

SELECT GROUP_CONCAT( 字段名 ) FROM 表名
并将该字段 在WHERE条件下 GROUP BY

‘捌’ sql合并列的重复数据

***********************
根据你的补充补充回答:
***********************
select
a,sum(b)
as
记录数,max(c)
as
c
from
表名
group
by
a;
---
以上,希望对你有所帮助。

‘玖’ SQL 两列中有相同的值,怎么合并起来

select (case when a is null then b else a end) as class,
((case when sl is null then 0 else sl end) +
(case when ssl is null then 0 else ssl end)) as amout
from A

‘拾’ sql合并重复的字段

一句话搞定,这只是一个简单的交叉查询问题:
1.
方法1:
ACCESS有向导的,在查询视图里找到上面[插入]菜单,选择交叉查询,交叉查询要求,必须有值进行计算,必须有列进行分类,必须有行进行分组,但N个组只能交叉1列数据,所以你就该把
数量
的合计
作为值
产品型号
分组
作为列用来分类
其他字段
分组
作为行用来分组
明白没,如果还没明白就用代码
2.
方法2用代码:(看仔细我的代码怎么写的格式不能错)
TRANSFORM
Sum(数目)
as
数量合计
Select
订单号,
姓名,
商品单价,
配送方式,
数量合计*单价
as
商品金额,
IIF(配送方式=韵达快递,12,0)
as
配送金额,
配送金额+商品金额
as
金额合计
From
Order
Group
By
订单号,
姓名,
商品单价,
配送方式,
数量合计*单价,
iif(配送方式='韵达快递',12,0),
配送金额+商品金额
PIVOT
Order.产品型号;
看懂没,直接复制进去检查一下符号用一下.
交叉查询语句是这么写的:
TransForm
统计函数体
Select
分组行的字段名...字段名
From
表名
Group
By
分组的字段名
Pivot
作为列的字段名;
统计函数体就是交叉计算的结果,他叫
值,分组行的字段名,是作为行的,他的作用就是体现每条记录的详细特征,Group
By关键字是针对分组汇总的结束语,Pivot是将行转换成列,记住,只能计算一个列,
在SQL中和在ACCESS语句都可以实现,下面这些哥们没试过,不代表没办法实现,在数据库中这种算法很普遍,这叫做交叉查询