簡體   English   中英

UNION ALL的替代選項

[英]Alternative option to UNION ALL

我有下面的SQL:

SELECT '1.1' AS column_a, '1' as column_b, 4 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '1.2' AS column_a, '1' as column_b, 4001 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '2.1' AS column_a, '2' as column_b, 1 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '2.1' AS column_a, '2' as column_b, 2 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '2.1' AS column_a, '2' as column_b, 3 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '2.2' AS column_a, '2' as column_b, 1001 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '2.2' AS column_a, '2' as column_b, 1002 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '2.2' AS column_a, '2' as column_b, 1003 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '2.2' AS column_a, '2' as column_b, 1004 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '2.2' AS column_a, '2' as column_b, 1005 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '2.2' AS column_a, '2' as column_b, 1006 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '2.2' AS column_a, '2' as column_b, 2001 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '2.2' AS column_a, '2' as column_b, 2002 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '2.2' AS column_a, '2' as column_b, 2003 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '2.2' AS column_a, '2' as column_b, 2004 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '3.1' AS column_a, '3' as column_b, 3001 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '3.1' AS column_a, '3' as column_b, 3002 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '3.2' AS column_a, '3' as column_b, 3003 AS column_c FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '3.2' AS column_a, '3' as column_b, 3004 AS column_c FROM SYSIBM.SYSDUMMY1

SQL結果是固定的,所有值都相同。

我正在使用DB2。 有沒有在SQL中沒有太多重復的更好的方法來做同樣的事情?

正如Lashane所說,如果您的平台和DB2版本支持VALUES,那么答案可能就是答案。

這適用於DB2 for i v7.1

with tbl (col1,col2) 
  as (VALUES ('A', 1), ('B', 2), ('C', 2))
select * from tbl                                            

您可以使用PureXML將嵌入式XML塊解析為表:

SELECT * 
FROM XMLTABLE (
'/set/row'
PASSING XMLPARSE(
'<set>
<row a="1.1" b="1" c="4"/>
<row a="1.2" b="1" c="4001"/>
<row a="2.1" b="2" c="1"/>
</set>')
COLUMNS
column_a CHAR(3) PATH '@a',
column_b CHAR(1) PATH '@b',
column_c INTEGER PATH '@c'
) AS X

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM