我有一张表,其中field2有时包含数据,有时包含嵌入单元格中的CASE表达式。我希望当field2有数据时,field3等于field2,但是当Case Expression嵌入到field2中时,我希望field3返回Case Expression的结果,如下所示:
field1 field2 field3
A Data Data
A Data Data
B Data Data
B Case Exp.. Result of Case Exp
B Data Data
这是我当前的方法:
Declare @field2variable as NVARCHAR(max);
Select @field2variable=t.field2 From table;
Select
t.field1,
t.field2,
Case When t.field2 NOT Like '%Data%' Then EXECUTE SP_EXECUTESQL @field2variable
Else t.field2
End As field3
Into new_table
From table t
第一个问题是我试图将@ field2variable分配给整个列而不是单个值。
第二个问题是它的SQL不允许我在select语句中运行“ EXECUTE SP_EXECUTESQL”。
答案 0 :(得分:0)
如果需要该表,则应这样创建:
Declare @field2variable as NVARCHAR(max);
declare @coun int;
select @coun=count(id) from table;
declare @idd int =0;
declare @bb nvarchar(50);
while @coun>0
begin
set @idd=(select id from ( select id,ROW_NUMBER() over(order by id) as rowss from table )as a where rowss=@coun)
set @bb=cast(( select field2 from table where id=@idd)as nvarchar(50))
if(left(@bb,1)<>'D')
exec SP_EXECUTESQL @bb
set @coun=@coun-1;
--insert into table ......
end
最后,您应该创建表并将其结果插入该表