【发布时间】:2019-05-08 14:05:29
【问题描述】:
我正在与 CA (Broadcom) UIM 合作。我想要从多个视图中提取不同值的最有效方法。对于 S_QOS_DATA 表中存在的每个 QOS,我都有以“V_”开头的视图。我特别想为以“V_QOS_XENDESKTOP”开头的任何视图提取数据。
给我快速结果的低效方法如下:
select * from s_qos_data where qos like 'QOS_XENDESKTOP%';- 获取该数据并将其放入 Excel。
-
使用
CONCAT仅将 qos 名称转换为查询,例如:SELECT DISTINCT samplevalue, 'QOS_XENDESKTOP_SITE_CONTROLLER_STATE' AS qos FROM V_QOS_XENDESKTOP_SITE_CONTROLLER_STATE union 向下复制所有行的公式单元格,并从最后一个查询中删除 Union 添加分号。
这行得通,我得到了输出,但必须有一个更优雅的解决方案。我发现的大多数与通过 SQL 进行迭代相关的答案都使用数字,或者似乎不是我想要的。示例:Multiple select queries using while loop in a single table? Is it Possible? 和 Syntax of for-loop in SQL Server
【问题讨论】:
-
您应该为所有 QOS 创建一个视图,并带有一列。每个 QOS 有一个单独的行并不是一个好主意 - 正如您所发现的那样。
-
是否可以将这些
V_(some QOS from S_QOS_DATA)合并到一个视图中,这样您就不必合并视图了?或者...是这个系统的架构,每个V_(some QOS from S_QOS_DATA)本身都构建在单个表之上,用于保存该 QOS 的数据(完全不熟悉这个 CA 博通 UIM 数据模型)。如果每个 QOS 都有自己的表并且这些V_视图有助于对齐列,那么 UNION 可能是您最好的选择,但它很难看。 -
@JNevill 是的,每个 V_ 都是 RN_、HN_ 和 DN 表的连接,其中包含原始、每小时和每日数据以及 S_QOS_DATA 表。例如,RN_10567 可以是包含 QOS_XENDESKTOP_SITE_CONTROLLER_STATE qos 的所有原始数据的表。
-
我想我同意@GordonLinoff 的建议。也许您可以分享其中一些
V_视图,我们可以建议一种方法将它们组合成一个V_QOS_XENDESKTOP视图,其中包含所有 XENDESKTOP QOS 数据,而无需使用 UNION。 -
我在考虑 SELECT * FROM sys.views ;然后在你放 where [name] like '%your_condition_here%' 的地方;但这只是您解决方案的一部分。第 2 步)动态查询为您构建所有选择 *。然后你就开火了。
标签: sql sql-server