sql - 在sql server的一个视图中组合多个UNION
问题描述
我想创建一个如下视图。
Create view SomeView
AS
SELECT DISTINCT ISNULL(ID,'ID') as Id,
ISNULL(ID,'unknown') + ':' + 'ID' AS label,
ISNULL(ID,'unknown') AS [value]
FROM [test].[emp].[OrgView]
UNION
SELECT DISTINCT ISNULL(EMP_ID,'ID') as Id,
ISNULL(EMP_ID,'unknown') + ':' + 'EMP_ID' AS label,
ISNULL(EMP_ID,'unknown') AS [value]
FROM [test].[emp].[OrgView]
UNION
SELECT DISTINCT ISNULL(LICENSE_NO,'LICENSE_NO') as Id,
ISNULL(LICENSE_NO,'unknown') + ':' + 'LICENSE_NO' AS label,
ISNULL(LICENSE_NO,'unknown') AS [value]
FROM [test].[emp].[OrgView]
.
.
.
.
.
10 such selects
那么在这种情况下,是否会为每个选择块进行调用,还是只会调用一次?我不希望这对每个 select 进行 10 次不同的调用。如果您知道,请向我指出一些在线资源。
解决方案
使用APPLY
:
SELECT DISTINCT COALESCE(v.ID, v.id_default) as Id,
COALESCE(o.FIRST_NAME, 'unknown') + ':' + v.name_suffix AS label,
COALESCE(o.VALUE, 'unknown') AS [value]
FROM [test].[emp].[OrgView] o CROSS APPLY
(VALUES (o.ID, 'ID', 'Unknown'),
(o.EMP_ID, 'ID', 'EMP'),
(o.LICENSE, 'LICENSE_NO', 'LICENSE_NO'), . . .
) v(ID, id_default, name_suffix);
推荐阅读
- java - 将文本文件附加到文本区域
- php - 如何在codeigniter中使用imagemagick裁剪图像?
- r - Shinydashboard 未在 AWS Shiny-Server 上正确呈现 UI
- c# - Asynchrony with Kafka C# Client
- swift - Why are IBOutlets optionals after swift 5 migration
- email - Send mail from Google Cloud Function using appspotmail.com
- c - 如何将 int 存储在由 malloc 分配的 char * 中
- ruby-on-rails - Rails 中 with_options 的生命周期。为什么不工作?
- sql - 根据其他列条目对 ID 求和
- asp.net-mvc-5 - Could not find a part of the path 'c:\users\dell\documents\visual studio 2015\Projects\CreateCon\CreateCon\Content\Images\1.png'