请教大神,这个存储过程如何写?

qq_41163514 2017-11-24 02:34:48
表1
tid colname val1 val1 val2
1 js_dh 1700099
1 js_fsbh 1
1 js_je 700.00
1 js_kh null
1 js_sl null
1 js_jssj 2017-1-1
1 js_btbh 001
2
2
2
2
2
2
2

31万条数据


表2

js_dh js_fsbh js_je js_kh js_sl js_jsssj js_btbh
170009 1 700 2017-1-1 001



如何将表1的数据转换成表2的数据,谢谢各位老师

...全文
266 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
听雨停了 2017-11-24
  • 打赏
  • 举报
回复
引用 12 楼 qq_41163514的回复:
听雨停了网友,非常感谢你的热心帮助,真是无以言表的感谢,已经成功了, [quote=引用 10 楼 qq_37170555 的回复:] [quote=引用 9 楼 qq_41163514 的回复:] 你好,版主那个代码你能帮我改完整些吗,请原谅我这个菜鸟的请求,我对存储过程了解太少了,谢谢

declare @sql varchar(8000)
set @sql='insert into account_details(js_dh,js_fsbh,js_je,js_kh,js_sl,js_jssj,js_btbh) select js_dh,js_fsbh,js_je,js_kh,js_sl,js_jssj,js_btbh from (select tid'
select @sql=@sql+' , max(case colname when '''+ colname +''' then val1 else '''' end) ['+ colname +']'
from (select distinct colname from uuu_details) as a
set @sql=@sql+' from uuu_details group by tid) a'
exec(@sql)
以上代码直接复制过去执行就ok了,如果不报错那就没问题了。你的两个表示account_details和uuu_details对吧[/quote][/quote] 成功了就好,不用谢,帮助别人快乐自己嘛。这些都是举手之劳,有什么道理不帮助你呢
qq_41163514 2017-11-24
  • 打赏
  • 举报
回复
听雨停了网友,非常感谢你的热心帮助,真是无以言表的感谢,已经成功了,
引用 10 楼 qq_37170555 的回复:
[quote=引用 9 楼 qq_41163514 的回复:] 你好,版主那个代码你能帮我改完整些吗,请原谅我这个菜鸟的请求,我对存储过程了解太少了,谢谢

declare @sql varchar(8000)
set @sql='insert into account_details(js_dh,js_fsbh,js_je,js_kh,js_sl,js_jssj,js_btbh) select js_dh,js_fsbh,js_je,js_kh,js_sl,js_jssj,js_btbh from (select tid'
select @sql=@sql+' , max(case colname when '''+ colname +''' then val1 else '''' end) ['+ colname +']'
from (select distinct colname from uuu_details) as a
set @sql=@sql+' from uuu_details group by tid) a'
exec(@sql)
以上代码直接复制过去执行就ok了,如果不报错那就没问题了。你的两个表示account_details和uuu_details对吧[/quote]
yilanwuyu123 2017-11-24
  • 打赏
  • 举报
回复
pivot.....
听雨停了 2017-11-24
  • 打赏
  • 举报
回复
引用 9 楼 qq_41163514 的回复:
你好,版主那个代码你能帮我改完整些吗,请原谅我这个菜鸟的请求,我对存储过程了解太少了,谢谢

declare @sql varchar(8000)
set @sql='insert into account_details(js_dh,js_fsbh,js_je,js_kh,js_sl,js_jssj,js_btbh) select js_dh,js_fsbh,js_je,js_kh,js_sl,js_jssj,js_btbh from (select tid'
select @sql=@sql+' , max(case colname when '''+ colname +''' then val1 else '''' end) ['+ colname +']'
from (select distinct colname from uuu_details) as a
set @sql=@sql+' from uuu_details group by tid) a'
exec(@sql)
以上代码直接复制过去执行就ok了,如果不报错那就没问题了。你的两个表示account_details和uuu_details对吧
qq_41163514 2017-11-24
  • 打赏
  • 举报
回复
你好,版主那个代码你能帮我改完整些吗,请原谅我这个菜鸟的请求,我对存储过程了解太少了,谢谢
听雨停了 2017-11-24
  • 打赏
  • 举报
回复
引用 7 楼 qq_41163514 的回复:
不好意思,忘记说了,是SQL2000
那你就用楼上版主那个办法,2000不支持povit函数,但是你可以用max(case when)这样的
qq_41163514 2017-11-24
  • 打赏
  • 举报
回复
不好意思,忘记说了,是SQL2000
听雨停了 2017-11-24
  • 打赏
  • 举报
回复
引用 5 楼 qq_41163514 的回复:
T1 目标表T2 我试了出错呢
你这个什么数据库啊,是sql server吗?是的话是什么版本的啊
qq_41163514 2017-11-24
  • 打赏
  • 举报
回复
T1


目标表T2


我试了出错呢
听雨停了 2017-11-24
  • 打赏
  • 举报
回复
引用 3 楼 qq_41163514 的回复:
如何建立个循环,把31万条数据转到表2里面,
建立循环干嘛,上面那样直接就可以出来啊,你把查询出来的数据直接插入表2就可以了啊,看我上面的回答
qq_41163514 2017-11-24
  • 打赏
  • 举报
回复
如何建立个循环,把31万条数据转到表2里面,
二月十六 2017-11-24
  • 打赏
  • 举报
回复
这样满足要求吗?
--测试数据
if not object_id(N'Tempdb..#T1') is null
drop table #T1
Go
Create table #T1([tid] int,[colname] nvarchar(27),[val1] nvarchar(28))
Insert #T1
select 1,N'js_dh',N'1700099' union all
select 1,N'js_fsbh',N'1' union all
select 1,N'js_je',N'700.00' union all
select 1,N'js_kh',null union all
select 1,N'js_sl',null union all
select 1,N'js_jssj',N'2017-1-1' union all
select 1,N'js_btbh',N'001'
Go
--测试数据结束
declare @sql varchar(8000)
set @sql='select tid'
select @sql=@sql+' , max(case colname when '''+ colname +''' then val1 else '''' end) ['+ colname +']'
from (select distinct colname from #T1) as a
set @sql=@sql+' from #T1 group by tid'
exec(@sql)


听雨停了 2017-11-24
  • 打赏
  • 举报
回复

use Tempdb
go
--> --> 听雨停了-->测试数据

if not object_id(N'Tempdb..#tab') is null
drop table #tab
Go
Create table #tab([tid] int,[colname] nvarchar(27),[val1] nvarchar(28))
Insert #tab
select 1,N'js_dh',N'1700099' union all
select 1,N'js_fsbh',N'1' union all
select 1,N'js_je',N'700.00' union all
select 1,N'js_kh',null union all
select 1,N'js_sl',null union all
select 1,N'js_jssj',N'2017-1-1' union all
select 1,N'js_btbh',N'001' UNION all
select 2,N'js_dh',N'1700088' union all
select 2,N'js_fsbh',N'1' union all
select 2,N'js_je',N'800.00' union all
select 2,N'js_kh','200' union all
select 2,N'js_sl','200' union all
select 2,N'js_jssj',N'2017-1-1' union all
select 2,N'js_btbh',N'001'
--测试数据结束
Select * from #tab

DECLARE @name VARCHAR(max),@sql VARCHAR(max)
set @name =stuff((SELECT DISTINCT ',['+[colname]+']' from #tab for xml PATH('')),1,1,'')
PRINT @name
set @sql ='SELECT [js_btbh],[js_dh],[js_fsbh],[js_je],[js_jssj],[js_kh],[js_sl] from #tab pivot(max(val1)for [colname] in('+@name+'))a'
PRINT @sql
EXEC( @sql)

随着通信电子技术的迅速发展,信息技术给家居行业产生了深远的影响,家居环境的智能化监控已经成为智能家居的一个重要的发展方向。人们逐渐对自己的生活提出一种更高的要求,他们需要一种智能化、可交互,并且融合现代创新科技的产品来改善他们的生活环境,使他们生活更加安全、舒适、便捷、智能。本文根据智能家居的发展背景和研究现状,并且从实用性和可行性角度出发,研究设计了一种基于STM32单片机的智能家居系统。该系统由一个多功能综合的技术系统组成,各个多功能子系统间具有协同配合能力。基于STM32单片机实现的功能子系统包括:智能温度检测,智能湿度检测,智能烟雾/火灾检测智能检测,无线传输,人机交互机构,风扇调节,报警模块。 整个系统分为前端51单片机采集板和后端STM32单片机接收板。 采集板使用DHT11温湿度传感器、MQ烟雾传感器完成室内家居环境的采集。然后通过nRFL24L01将采集到的数据发送给后端。接收板使用LCD1602完成数据显示、使用蜂鸣器模块报警,使用风扇驱动模块调节室内家居环境。本文完成了智能家居控制系统前端、后端软硬件的设计,使用Altium designer绘制了电路原理图,使用Keil C完成了51单片机和STM32单片机的编程与调试。 最后,对本文设计的基于STM32的智能家居控制系统进行部署调试。试验结果表明,该系统可成功应用在智能家居环境检测调节和火灾安全防护的领域,可提高家居生活智能化水平。

22,296

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧