6

我想添加一个额外的列。这个额外的列将根据案例陈述获得一个值。例如,我的目标是,尽管语法非常错误,但要做到这一点:当“A”然后“Apple”和“ExtraColumn”=1 时。我尝试使用下面的代码创建一个与此等效的,但我收到一个错误,表明我的 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
4

2 回答 2

6

您必须为每个列名重复您的案例构造。像这样的东西:

case ColumnName 
when 'A' then 'Apple'  
when 'B' then 'Banana'
end ColumnName, 

case ColumnName
when 'A' then '1'  
when 'B' then '2'
end ExtraColumn,

这里有个问题。如果您在 where 子句中使用 ColumnName,您可能不喜欢结果,因为您将它用作别名。

编辑从这里开始

您可以随意设置别名。如果它们很简单,只需键入它们。

 select column1 fred, column2 barney

如果您想要多个单词或 sql 关键字,请使用双引号

select column1 "fred flinstone", column2 "select"
于 2013-04-30T21:49:47.190 回答
1

您可以使用decode

select decode(ColumnName ,'A', 'Apple','B','Banana', 'Unknown') from .... 
于 2013-05-01T06:33:20.300 回答