在SQL Server的select语句结果中创建其他行

问题描述 投票:0回答:1

我正在创建一个相当复杂的SELECT查询,该查询具有跨多个表和视图的联接。主表与几个辅助表连接在一起。在两种情况下,需要根据大约25个CASE语句条件进一步细分行的结果集:

  1. 在检查一列中是否有特定值的基础上,必须根据该值创建新行,并为几列提供一些唯一值;
  2. 其中必须检查使用AND条件的两列以创建新行
  3. 这里是一个例子:

SELECT col1, col2, col3, col25, col26, col27, col48
FROM T1
INNER JOIN Table2 on Table2.col1 = T1.col1
INNER JOIN Table3 on Table3.col2 = T1.col1 

[Col25正在与INNER JOIN中的一列(Table2.ColA)进行比较,这是我需要CASE条件的位置,其中大约25个条件:]

CASE WHEN Table2.ColA = 'W-%' THEN Col25 = 'WATER'

并且我还需要在其中插入一个或多个其他行>

Col25 = 'REL', 
Col26 = 5000,
Col27 = 'M'

基本上,CASE表达式应该为我的SELECT语句中的结果行替换一个值,并且还为Col25,Col26,Col27插入一个或多个具有不同值的行,同时保持其他列值与返回的值相同通过SELECT语句。

我知道这可能不仅涉及我的select语句,而且可能需要遍历包含主查询结果的游标才能创建新闻行。这是我唯一可用的路线吗?任何帮助或指针将不胜感激。

我正在创建一个相当复杂的SELECT查询,该查询具有跨多个表和视图的联接。主表与几个辅助表连接在一起。行的结果集需要进一步拆分...

sql sql-server case rows
1个回答
1
投票

选项1

with q as ( -- your query
    select ...
)
select * from q
union all
select ... from q
where <conditions requiring a copy>
© www.soinside.com 2019 - 2024. All rights reserved.