mer*_*011 12 sql t-sql sql-server sql-server-2008
在T-SQL中,我可以将算术作为select的一部分.例如,假设我有一个带有名为Decimal的列的Math表.我可以做以下查询.
SELECT 100*Decimal FROM Math
Run Code Online (Sandbox Code Playgroud)
我想知道是否也可以在SELECT中创建逻辑,我创建一个映射,例如{A => B,F => Z},这样每次列为A时,它返回B,每次列为F ,它返回Z.
如果这是一个新问题我很抱歉,因为我对SQL不是很有经验.
And*_*ykh 16
我想你想使用CASE表达式:
SELECT
CASE column1
when 'A' THEN 'B'
when 'F' THEN 'Z'
END
FROM Tbl
Run Code Online (Sandbox Code Playgroud)
另请注意,它有两种不同的语法,请选择最适合您的语法.
您可以创建一个包含两列的表变量,一列用于映射的内容,另一列用于映射到的内容.然后,只需加入要重新映射的列上的表变量.
CASE语句适用于少量比较,但如果要进行多次重映射,那么表变量可能是更好的选择.
像这样的东西......
DECLARE @Mappings TABLE
(
MapFrom VARCHAR(50),
MapTo VARCHAR(50)
)
insert into @Mappings values
('A', 'B'),
('F', 'Z'),
('other', 'mappings');
select m.MapTo
from yourTable t
inner join @Mappings m on m.MapFrom = t.columnName
Run Code Online (Sandbox Code Playgroud)