我正在创建一个相当复杂的SELECT查询,该查询具有跨多个表和视图的联接。主表与几个辅助表连接在一起。在两种情况下,需要根据大约25个CASE语句条件进一步细分行的结果集:
这里是一个例子:
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查询,该查询具有跨多个表和视图的联接。主表与几个辅助表连接在一起。行的结果集需要进一步拆分...
选项1
with q as ( -- your query
select ...
)
select * from q
union all
select ... from q
where <conditions requiring a copy>