我想添加一个额外的列.这个额外的列将根据案例陈述获得一个值.我的目标是,例如,虽然语法非常错误,但要实现这一点:当'A'然后'Apple'和'ExtraColumn'= 1.我试图使用下面的代码创建一个equivialnt,但我得到一个错误,我的SQL语法不正确.
select Patient,
case ColumnName
when 'A' then 'Apple'
when 'B' then 'Banana'
end ColumnName,
case ExtraColumn
when 'A' then '1'
when 'B' then '2'
end ExtraColumn,
ColumnResult
from TABLE
unpivot
(
ColumnResult
for ColumnName in (COL1,COL2,COL3)
for ExtraColumn in (COL1,COL2,COL3)
)u
Run Code Online (Sandbox Code Playgroud)
您必须为每个列名重复您的案例构造.像这样的东西:
case ColumnName
when 'A' then 'Apple'
when 'B' then 'Banana'
end ColumnName,
case ColumnName
when 'A' then '1'
when 'B' then '2'
end ExtraColumn,
Run Code Online (Sandbox Code Playgroud)
这里有一个问题.如果在where子句中使用ColumnName,则可能不喜欢结果,因为您将其用作别名.
编辑从这里开始
您可以根据需要制作别名.如果它们很简单,只需输入它们即可.
select column1 fred, column2 barney
Run Code Online (Sandbox Code Playgroud)
如果您需要多个单词或sql关键字,请使用双引号
select column1 "fred flinstone", column2 "select"
Run Code Online (Sandbox Code Playgroud)