【发布时间】:2020-09-09 08:09:48
【问题描述】:
我昨晚发布了一个疯狂的长问题,这个问题太深入了。所以让我们保持这个更理论化。
假设您有一个非常长的 SELECT 语句,其中包含数十个代码块。每个块创建一个略有不同的计算列。为简单起见,您以颜色命名每个块。
您还在顶部声明了 5 个变量。每个变量都包含一个颜色作为字符串。
是否可以遍历这些变量并使用其中的值来选择要运行 SELECT 语句中的哪些块?
因此查询将返回 3 个计算列。绿色列,黄色,然后是绿色,没有其他变量,因为变量 4 和 5 为空
DECLARE
@variable1 = 'Green'
@variable2 = 'Yellow'
@variable3 = 'Green'
@variable4 = NULL
@variable5 = NULL
SELECT
CASE WHEN... THEN... AS 'Red Column',
CASE WHEN... THEN... AS 'Yellow Column',
CASE WHEN... THEN... AS 'Pink Column',
CASE WHEN... THEN... AS 'Green Column',
CASE WHEN... THEN... AS 'Orange Column',
CASE WHEN... THEN... AS 'Purple Column',
CASE WHEN... THEN... AS 'Blue Column'
FROM Some_tables
WHERE something = something
ORDER BY
这甚至可以用 SQL 实现吗?非常感谢提前
【问题讨论】:
-
标记您正在使用的 DBMS。
-
看这个和上一个问题,你已经掉进了XY Problem 兔子洞。当你真正应该退后一步并告诉我们更多关于你的代码应该解决的问题时,你专注于你在实施你决定的解决方案时遇到的问题。深呼吸,阅读这篇非常好的帖子,How to post a SQL question on a public forum,然后以全新的眼光回来。
-
@YogeshSharma 我正在使用 SSMS V17.7 和 SQL Server 2008。谢谢
-
@EricBrandt 我毫不怀疑我正在解决问题。当我离基地这么远时,这很难传达。好的,喘口气,继续阅读您发送的关于在公共论坛上发帖的文章...
标签: sql sql-server sql-server-2008-r2 dynamic-sql