--测试数据
create table 表(id int,proc1 decimal(20,1),proc2 decimal(20,1),proc3 decimal(20,1))
insert 表 select 12,3.4,6.7,1.1
go如何得到这样的数据
,数据由多列一行变成了多行一列
NAME
12
3,4
6.7
1.1
create table 表(id int,proc1 decimal(20,1),proc2 decimal(20,1),proc3 decimal(20,1))
insert 表 select 12,3.4,6.7,1.1
go如何得到这样的数据
,数据由多列一行变成了多行一列
NAME
12
3,4
6.7
1.1
解决方案 »
- 请高手给我分析这条sql语句的具体意思,O(∩_∩)O谢谢
- 这个存储过程哪里错了?
- 关系SQL实例的问题
- 请教存储过程变量指定范围疑问??谢谢
- 如何用一条sql把用TOP3查出来的3条记录的其中一字段组合起来哦
- 单表连接查询的问题
- 急,怎么写?
- 在MS-SQL Server和Oracl之间的数据交换
- 关于触发器的问题?在线等待.....
- 再給一百分,不惜一切代價要搞定的Access和SQL SERVER數據同步問題.
- sql server 2000的查询分析器中查询网络驱动器(映射的硬盘)的dbf数据库表,文件不存在!
- 可以实现汉字转成拼音的存储过程吗?注:网上看到的都是首字母的转换,我需要能转成全部拼音的
union all select proc1 from 表
union all select proc2 from 表
union all select proc3 from 表
select id from t
union all
select proc1
from t
union all
select proc2 from t
union all
select proc3 from t
SELECT @SQL = @SQL + ',SUM(CASE KEMU WHEN '''+KEMU+''' THEN CHENGJI END) '+KEMU
FROM (SELECT DISTINCT KEMU FROM MYTABLE) KEMU
SELECT @SQL = @SQL + ' FROM MYTABLE GROUP BY NAME'
EXEC (@SQL)--------------------------------------------------------------------
SELECT NAME ,SUM(CASE KEMU WHEN 'english' THEN CHENGJI END) english,
SUM(CASE KEMU WHEN 'shuxue' THEN CHENGJI END) shuxue,
SUM(CASE KEMU WHEN 'yuwei' THEN CHENGJI END) yuwei
FROM MYTABLE GROUP BY NAME---------------------------
仔细看看吧!
select id as Name from T
union all
select proc1 as Name from T
union all
select proc2 as Name from T
union all
select proc3 as Name from T
insert ta select 12,3.4,6.7,1.1
declare @sql varchar(1000)
set @sql=''
select @sql=@sql+'select '+name+' as name from ta union all ' from syscolumns where id=object_id('ta')
set @sql=left(@sql,len(@sql)-len('union all'))
exec(@sql)name
----------------------
12.0
3.4
6.7
1.1
用你的方法可以,但是@sql超过 8000 了,怎么样用两个串或者三个串连接在一起呢
create table ta(id int,proc1 decimal(20,1),proc2 decimal(20,1),proc3 decimal(20,1))
insert ta select 12,3.4,6.7,1.1
declare @sql varchar(1000)
set @sql=''
select @sql=@sql+'select '+name+' as name from ta union all ' from syscolumns where id=object_id('ta')
and colid!>2 --这是列名的序号
set @sql=left(@sql,len(@sql)-len('union all'))declare @sql1 varchar(1000)
set @sql1=''
select @sql1=@sql1+'select '+name+' as name from ta union all ' from syscolumns where id=object_id('ta')
and colid>2 --这是列名的序号
set @sql1=left(@sql1,len(@sql1)-len('union all'))exec (@sql+' union all '+@sql1)
name
----------------------
12.0
3.4
6.7
1.1