sql - 如何在 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”
- BAND = B 包括 ('911', '912')
- BAND = Q 包括 ('913', '914')
想要的结果
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
解决方案
该查询将为您提供所需的结果:
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
并查询此数据。
推荐阅读
- azure-active-directory - Azure Graph,通过 PrincipalId (ObjectId) 获取类型
- javascript - 如何在 Vue.js 中获取 JWT 身份验证令牌以通过 Axios 将表单数据提交到“WordPress Contact Form 7”端点?
- tensorflow - Conda 不能接受多个参数吗?
- python - 07002参数太少如何解决
- mysql - 如何在 Laravel 7 的菜单布局文件中使用计数功能显示项目总数?
- r - R - 查找数据集中的前 10 个相关值
- algorithm - 计算有限域中的公式
- sql - 如何在 VBA 中正确输入 sql where 子句?
- python - 使用 for 循环将十六进制代码排序到列中
- ubuntu - “Gtk 警告:gtk_disable_setlocale() 必须在 gtk_init() 之前调用”在 gdl(gnu 数据语言)中调用绘图时