我需要做的是根据另一个字段返回的值计算列:
Supose:
declare @t TABLE (
code varchar(5),
address varchar(20),
result_type varchar(1),
result varchar(50)
)
insert into @t values ('0001', '', 'L', 'DFK-2020')
insert into @t values ('0001', '', 'F', 'code')
insert into @t values ('0001', '214, Samuel St', 'F', 'address')
我需要的是返回的选择语句:
DFK-2020
0001
214, Samuel St.
我唯一能想到的是:
select
case
when result_type = 'L' then result
when result_type = 'F' then (result) -- -> ?????
end as ret_values
我迷失了????。 我必须根据存储在另一个字段中的内容选择一个字段
类似于:“当'result_type'为'F'时,请选择存储在名称存储在'结果'中的字段中的值”
在其他语言/场景中我曾经用“宏引用”来实现这一点。类似的东西:
select &(result) from ...
如何在sql server 2008中实现这一目标?
答案 0 :(得分:1)
一种方式:
select *,
case result_type
when 'L' then result
when 'F' then
case result
when 'code' then code
when 'address' then address
end
end
from @t
答案 1 :(得分:0)
你可以使用一些子选择,注意这不是性能最好的,所以如果你有大量的数据,它会很重。
类似的东西:
select
(select result from t where result_type = 'L') as fieldName1,
(select result from t where result_type = 'F') as fieldName2,
.
.
.
答案 2 :(得分:0)
SELECT
CASE result_type
WHEN 'L' THEN result
WHEN 'F' THEN
CASE result
WHEN 'code' THEN code
WHEN 'address' THEN address
-- and so on
END
END AS ret_values