嵌入到单元格中的case表达式如何执行?

时间:2019-02-14 14:28:38

标签: sql sql-server

我有一张表,其中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”。

1 个答案:

答案 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

最后,您应该创建表并将其结果插入该表