首页 > 解决方案 > 如何在 MS SQL 中创建虚拟表

问题描述

我发现用音乐家解释比用我的实际数据更容易。每个音乐家都有一个 ID,用于他们的姓名和乐器。

Select ID, NAME, PARAM FROM TABLE

当前结果

ID  NAME        PARAM
911 John        Name  
911 Guitar      Instr 1  
911 Piano       Instr 2
912 Paul        Name 
912 Bass        Instr 1
912 Piano       Instr 2
912 Guitar      Instr 3
913 Freddie     Name
913 Piano      Instr 1
913 Guitar     Instr 2
914 Brian      Name
914 Guitar     Instr 1

我想添加一个我需要从 ID 开始创建的列“Band”

想要的结果

ID    NAME      PARAM    BAND
911 John        Name     B
911 Guitar      Instr 1  B
911 Piano       Instr 2  B 
912 Paul        Name     B
912 Bass        Instr 1  B
912 Piano       Instr 2  B
912 Guitar      Instr 3  B
913 Freddie     Name     Q
913 Piano      Instr 1  Q
913 Guitar     Instr 2  Q
914 Brian      Name     Q
914 Guitar     Instr 1  Q

标签: sqlsql-servertsql

解决方案


该查询将为您提供所需的结果:

select id,
       name,
       param,
       case when id in (911,912) then 'B' when id in (913,914) then 'Q' end [Band]
from MY_TABLE

现在,如果你愿意,你可以CREATE VIEW

create view v_tableWithBand as
select id,
       name,
       param,
       case when id in (911,912) then 'B' when id in (913,914) then 'Q' end [Band]
from MY_TABLE

将结果存储在临时表中:

select id,
       name,
       param,
       case when id in (911,912) then 'B' when id in (913,914) then 'Q' end [Band]
into #tempTableWithBand 
from MY_TABLE

或在表变量中:

declare @tableWithBand table (id int, name varchar(100), param varchar(100), band char(1))
insert into @tableWithBand 
select id,
       name,
       param,
       case when id in (911,912) then 'B' when id in (913,914) then 'Q' end [Band]
from MY_TABLE

并查询此数据。


推荐阅读