请SQL高手帮忙:如何从一个表中复制列名和数据,到另一个表创建该列名并复制数据?

xmwangtiger 2010-04-08 12:23:20
请SQL高手帮忙解决:
我现在有一个表tableA,里面的字段是kid,kbh,kname等列名,另外有表table1,字段有kid,kbh,f_je等字段,还有相同字段的表table2,table3,table4,字段和table1一样,都是kid,kbh,f_je等字段,现在我要显示的是,tableA 的kid,kbh, ,kname统计table1的 f_je(金额),table2的f_je(金额),table3的f_je(金额),table4的f_je(金额),需要说明的是,每个表的kid,kbh字段是相关联的。
模拟效果如下:
------------------------------------------------------------
kid kbh kname f_je1 f_je2 f_je3 f_je4
1007 k001 百货公司 200 0 10 0
1012 k005 店铺 0 150 0 300
1003 k016 专柜 0 0 280 160

------------------------------------------------------------
请帮忙解决,谢谢!
我的用一下存储过程,得不到想要的结果:
-------------------------------------------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER procedure [pro_fylist]
@kid nvarchar(10)
as
declare @strSql nvarchar(4000)
set @strSql=''
set @strSql = '
select z.kid, SUM(a.f_je) AS f_je1 into #k FROM tableA AS z INNER JOIN table1 AS a
ON z.kbh = a.kbh and z.kid = a.kid group by kid
ALTER table #k ADD f_je1 real NULL
insert into #k(SUM(b.f_je)as f_je1) select b.f_je from tableA AS z INNER JOIN table1 AS b
ON z.kbh = b.kbh and z.kid = b.kid group by z.kid,b.f_je
ALTER table #k ADD f_je2 real NULL
insert into #k(SUM(c.f_je)as f_je2) select b.f_je from tableA AS z INNER JOIN table2 AS c
ON z.kbh = c.kbh and z.kid = c.kid group by z.kid,c.f_je
ALTER table #k ADD f_je3 real NULL
insert into #k(SUM(d.f_je)as f_je3) select b.f_je from tableA AS z INNER JOIN table3 AS d
ON z.kbh = b.kbh and z.kid = d.kid group by z.kid,d.f_je
ALTER table #k ADD f_je4 real NULL
insert into #k(SUM(e.f_je)as f_je4) select b.f_je from tableA AS z INNER JOIN table1 AS e
ON z.kbh = e.kbh and z.kid = e.kid group by z.kid,e.f_je

select
z.kid, z.kname, z.kbh, f_je1,f_je2,f_je3,f_je4
from tableA AS z INNER JOIN #k AS k ON z.kid = k.kid

drop table #k
'
print @strSql
EXEC SP_EXECUTESQL @strSql


---------------------------------------------------------------
语句这段出错:ALTER table #k ADD f_je1 real NULL
insert into #k(SUM(b.f_je)as f_je1) select b.f_je from tableA AS z INNER JOIN table1 AS b
ON z.kbh = b.kbh and z.kid = b.kid group by z.kid,b.f_je
提示错误信息:‘(’附近有语法错误。








...全文
495 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 playwarcraft 的回复:]
SQL code

不知道有沒有理解錯
--1
select A.*,
isnull(B.f_je,0) as f_je1 ,
isnull(C.f_je,0) as f_je2
from TableA A
left join (select kbh,kid,sum(f_je) as f_je from table1 group by kbh,kid) B
on A.kbh……
[/Quote]

估计没有
playwarcraft 2010-04-08
  • 打赏
  • 举报
回复

不知道有沒有理解錯
--1
select A.*,
isnull(B.f_je,0) as f_je1 ,
isnull(C.f_je,0) as f_je2
from TableA A
left join (select kbh,kid,sum(f_je) as f_je from table1 group by kbh,kid) B
on A.kbh = B.kbh and A.kid = B.kid
left join (select kbh,kid,sum(f_je) as f_je from table2 group by kbh,kid) C
on A.kbh = C.kbh and A.kid = C.kid

--2
select A.*,
f_je1 =isnull((select sum(f_je) from table1 where kbh =A.kbh and kid=A.kid),0),
f_je2 =isnull((select sum(f_je) from table2 where kbh =A.kbh and kid=A.kid),0)
from TableA A

22,209

社区成员

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

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