当前位置: 代码迷 >> Sql Server >> 求SQL语句,用循环做解决方案
  详细解决方案

求SQL语句,用循环做解决方案

热度:43   发布时间:2016-04-27 20:30:55.0
求SQL语句,用循环做
表A
费用类别,费用,医生姓名   id  
治疗费         100       aa             1
B超费           200       bb             2
打针费         300       cc             3
...  
...

表B
医生姓名,   治疗费,     B超费,   打针费,床位费     ...   ...
aa                   100             100         100         100
bb                   200             300         100         200
cc                   300             200           200         200

UPDATE后要出来的结果

医生姓名,   治疗费,     B超费,   打针费,床位费     ...   ...
aa                   200             100         100         100
bb                   200             500         100         200
cc                   300             200           500         200


因为表A数据很多,最好有个循环做完

以下是我做的.还是不对


declare   @c   char(20)
declare   @c1   char(20)
declare   @i   money
declare   @sql   char(8000)

select   @c=医生,@c1=费用类别,@i=费用   from   aa   where   [id]=1
select   @c,@c1,@i
--以上是正确的.
--后面的错误请高手帮忙修改
sql= 'update   sheet   set   '@c '= '@c '+ '@i '   from   sheet   where   医生= '@c ' '
exec   sql


http://community.csdn.net/Expert/topic/5607/5607124.xml?temp=.707287


------解决方案--------------------
sql= 'update sheet set '[email protected]+ '= '[email protected]+ '+ '+ltrim(@i)+ ' where 医生= ' ' '[email protected]+ ' ' ' '
exec (sql)
------解决方案--------------------
Declare @S1 Nvarchar(4000), @S2 Nvarchar(4000)
Select @S1 = ' ', @S2 = ' '
Select @S1 = @S1 + ', ' + 费用类别 + N ' = B. ' + 费用类别 + ' + C. ' + 费用类别 , @S2 = @S2 + N ', SUM(Case 费用类别 When N ' ' ' + 费用类别 + N ' ' ' Then 费用 Else 0 End) As ' + 费用类别
From A Group By 费用类别
Select @S1 = 'Update B Set ' + Stuff(@S1, 1, 1, ' ') + N ' From B Inner Join (Select 医生姓名 ' + @S2 + N ' From A Group By 医生姓名) C On B.医生姓名 = C.医生姓名 '
EXEC(@S1)
GO
Select * From B
------解决方案--------------------
Create Table A
(费用类别 Nvarchar(20),
费用 Int,
医生姓名 Varchar(20),
id Int)
Insert A Select N '治疗费 ', 100, 'aa ', 1
Union All Select N 'B超费 ', 200, 'bb ', 2
Union All Select N '打针费 ', 300, 'cc ', 3

Create Table B
  相关解决方案