首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问一下 SQL 的语句的写法

2013-06-25 
请教一下 SQL 的语句的写法。我有两个表表1CLBHCLLXCLMCCLDWCLGG....(当然,不止这些字段A0001双粉128金东R1

请教一下 SQL 的语句的写法。
我有两个表

表1

CLBHCLLXCLMCCLDWCLGG       ....(当然,不止这些字段
A0001双粉128金东R1194*787
A0002哑粉128金东R1194*787
A0003双粉128金东R1194*787


create table #temp1(
  CLBH varchar(10),
  CLLX varchar(10),
  CLMC varchar(10),
  CLDW varchar(10),
  CLGG varchar(10)
)

insert into #temp1
select 'A0001','双粉','128金东','R','1194*787' union all
select 'A0002','哑粉','128金东','R','1194*787' union all
select 'A0003','双粉','128金东','R','1194*787' 



表2:
CLBHXMMCFValue
A0001CLLX
A0001CLMC
A0001CLDW
A0001CLGG
A0002CLLX
A0002CLMC
A0002CLDW
A0002CLGG
A0003CLLX
A0003CLMC
A0003CLDW
A0003CLGG



create table #temp2(
  CLBH varchar(10),
  XMMC varchar(10),
  FValue varchar(10)
)

insert into #temp2
select 'A0001','CLLX','' UNION ALL
select 'A0001','CLMC','' UNION ALL
select 'A0001','CLDW','' UNION ALL
select 'A0001','CLGG','' UNION ALL

select 'A0002','CLLX','' UNION ALL
select 'A0002','CLMC','' UNION ALL
select 'A0002','CLDW','' UNION ALL
select 'A0002','CLGG','' UNION ALL

select 'A0003','CLLX','' UNION ALL
select 'A0003','CLMC','' UNION ALL
select 'A0003','CLDW','' UNION ALL
select 'A0003','CLGG','' 





将 表2 有对应项目(与表1的字段名对应)的值填入表2中。

得到的结果:


CLBHXMMCFVALUE
A0001CLLX双粉
A0001CLMC128金东
A0001CLDWR
A0001CLGG1194*787
A0002CLLX 哑粉
A0002CLMC128金东
A0002CLDWR
A0002CLGG1194*787
A0003CLLX 双粉
A0003CLMC128金东
A0003CLDWR
A0003CLGG1194*787


----------------------

有什么方法可以解决这个问题吗?

如果类似


INSERT INTO 表3 (CLBH,XMMC,FVALUE)
select CLBH,XMMC=‘CLLX’,FVALUE=CLLX
 from #TEMP1
INSERT INTO 表3 (CLBH,XMMC,FVALUE)
select CLBH,XMMC=‘CLMC’,FVALUE=CLMC
 from #TEMP1

......



这样的代码,也就没有什么意义了。
SQL select
[解决办法]

create table temp1(
  CLBH varchar(10),
  CLLX varchar(10),
  CLMC varchar(10),
  CLDW varchar(10),
  CLGG varchar(10)
)
 
insert into temp1
select 'A0001','双粉','128金东','R','1194*787' union all
select 'A0002','哑粉','128金东','R','1194*787' union all
select 'A0003','双粉','128金东','R','1194*787' 

declare @sql varchar(max)
select @sql = isnull(@sql + ' union all ' , '' ) 


              + ' select CLBH , XMMC = ' + quotename(Name , '''') 
              + ' , FValue = ' + quotename(Name) + ' from temp1'
from syscolumns 
where name! = N'CLBH' and ID = object_id('temp1')
order by colid asc
exec(@sql + ' order by CLBH ')
/*
CLBH       XMMC FValue
---------- ---- ----------
A0001      CLLX 双粉
A0001      CLMC 128金东
A0001      CLDW R
A0001      CLGG 1194*787
A0002      CLGG 1194*787
A0002      CLDW R
A0002      CLMC 128金东
A0002      CLLX 哑粉
A0003      CLLX 双粉
A0003      CLMC 128金东
A0003      CLDW R
A0003      CLGG 1194*787
*/
drop table temp1

热点排行