高手帮忙看看这个SQL语句那里错误
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
[解决办法]
sql= 'update sheet set '+@c+ '= '+@c+ '+ '+ltrim(@i)+ ' from sheet where 医生= ' ' '+@c+ ' ' ' '
exec (sql)
[解决办法]
set @sql= 'update sheet set 医生 = ' ' ' + @c + ' ' ',费用 = ' + rtrim(@i) + ' where 医生= ' ' ' + @c + ' ' ' '
exec(@sql)
[解决办法]
靠,你错的地方可多了,update table set field=value where 1=1,怎么又一个from?
[解决办法]
exec (sql)
必须加括号才行呀!
[解决办法]
Create Table A
(费用类别Nvarchar(20),
费用Int,
医生姓名Varchar(20),
idInt)
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
(医生姓名Varchar(20),
治疗费Int,
B超费Int,
打针费Int,
床位费Int)
Insert B Select 'aa ', 100, 100, 100, 100
Union All Select 'bb ', 200, 300, 100, 200
Union All Select 'cc ', 300, 200, 200, 200
GO
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
GO
Drop Table A, B
--Result
/*
医生姓名治疗费B超费打针费床位费
aa200100100100
bb200500100200
cc300200500200
*/