sql如何一条记录变两条:select a,b from T 结果为 图1 ,现在我想要变成图2 ,sql语句怎么写?

图1

图2

select a.Col1,b.Col2
from (
select a as Col1,convert(xml,'<row><b>'+rtrim(replace(b,',','</b><b>'))+'</b></row>') as Col2 from tb)a
outer apply (select Col2=C.v.value('.','nvarchar(100)') from a.COl2.nodes('/row/b')C(v))b
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-10-31
select a,stuff((select ','+b from table where a=t.a for xml path('')),1,1,'') as b
from table as t追问

这位大哥 没太看明白 执行了 也不行

追答

额。。你b列是数字吧,拼接字符要转换啊
select a,stuff((select ','+cast(b as varchar) from table where a=t.a for xml path('')),1,1,'') as b
from table as t

第2个回答  2012-10-31
要用循环,有兴趣的话我可以帮你写一下追问

因为我要做成视图 , 用循环可以吗?

追答

做成视图似乎不行
看看二楼的回答,我也揣摩一下

sql如何一条记录变两条:select a,b from T 结果为 图1 ,现在我想要变成...
select a.Col1,b.Col2 from (select a as Col1,convert(xml,'<row><b>'+rtrim(replace(b,',','<\/b><b>'))+'<\/b><\/row>') as Col2 from tb)a outer apply (select Col2=C.v.value('.','nvarchar(100)') from a.COl2.nodes('\/row\/b')C(v))b ...

sql 如何把一个查询结果当作一个表来查询?
1:将结果作为一个临时表,可以使用链接或者直接查询 select * from (SELECT SUM(NUM_QNTY4) AS sumNum, NUM_LINKID FROM RW_STORE_QUNTY GROUP BY NUM_LINKID ) as A --- 2:将结果作为子查询的方式 select * from 表 where 字段 in select NUM_LINKID (SELECT SUM(NUM_QNTY4) AS s...

写一条SQL语句将表一的数据转换成表二的样子
select @sql='select a.mname as 学生姓名'select @sql=@sql+',sum(case c.fname when '''+fname+''' then b.score else null end )as '+fname from class select @sql=@sql+' from member a left join score b on a.mid=b.mid left join class c on b.fid=c.fid group by...

怎么实现一条SQL语句的输出作为另一条SQL语句的输入?
select 号码头 from 表1 --是从表1取得的数据,放在括号里作为条件 in --如果号码的前三位,在(777,888,999)里面,也就是说等于其中一个,则条件成立,把本条记录显示出来

sql查询中怎么将两条内容相同的记录显示成一条
sql查询中两条内容相同的记录显示成一条可以用group by语句或distinct语句来实现。如,test表中有如下数据:group by的方法:select id,name from test group by id,name;查询结果:distinct的方法:select distinct id,name from test;查询结果:...

如何在数据库中通过sql将图1变成图2,跪求大神!!!怎么用sql写的,感
1、先为各分组建立序号 AAAA -->1 AAAA -->2 AAAA -->3 BBBB -->1 BBBB -->2 ...SELECT JLX_ID ,DBN_ID ,ROW_NUMBER() OVER (PARTITION BY JLX_ID ORDER BY DBN_ID) AS OrdINTO #TempFROM TableX2、再作个小运算,计算出XLie(1 + Ord \/ 2), YLie(Ord % 2)SE...

我数据库里一个字段值是1,2,如何将查询出来的值显示为别的 比如1显示...
一、使用case when 语句即可实现,步骤如下 1、例,表格:aaa,数据结构如图 2、那么可以这样写SQL语句,select a,case when c = 1 then '同意' when c = 2 then '拒绝' else "" end from aaa;语句大意:检索表格aaa的a字段和c字段,当字段c的值为1时c字段输出“同意”,为2输出“拒绝”...

怎样把这两条sql拼接在一起,就是既要第一条sql查询出来的数据,又要第...
select * from t_course tc left join t_course_target ct on tc.course_code=ct.course_code left join t_employee_organization_ref eor on ct.store_no=eor.unit_id left join t_employee e on e.employee_code=eor.employee_code left join t_training_wishes tw on tw.employee_...

怎样将两条sql语句(sql1,sql2)查询的结果,(前提是查询的字段相同)合 ...
1.记录顺序在没有排序或索引的情况下,没有任何保障,所以,您最好保留排序字段。所以,建议您,使用排序字段或索引以保证固定的查询顺序。2.给你一个查询,不动单个查询内的顺序,只给SQL1的结果集与SQL结果集的顺序:(通过辅助排序字段)SELECT *,0 AS SN FROM TABLENAME--sql1 UNION ALL SELEC...

如何用在MySQL中用sql语句将表1的内容统计成表2
先设置一个简单的调试规则,我们设置了两个调试选项:d:开启各个调试点的输出 O,\/tmp\/mysqld.trace:将调试结果输出到指定文件 请点击输入图片描述 然后我们创建了一张表,来看一下调试的输出结果:请点击输入图片描述 可以看到 create table 的过程中,MySQL 的一些细节操作,比如分配内存 alloc_root ...

相似回答