‘壹’ 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'
三、用标量函数查询:
创建标量函数:
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;
用标量函数查询:
select cid,dbo.b(cid) as id from stuUnion group by cid
用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语句都可以实现,下面这些哥们没试过,不代表没办法实现,在数据库中这种算法很普遍,这叫做交叉查询