Select 在具有 WITH 子句的子查询上
Select over a subquery having WITH clause
我对 DB2 不熟悉,在 Oracle 中我们可以执行以下操作
select * from
(WITH A AS (SELECT 'test' FROM DUAL)
SELECT *
FROM A )
我在 DB2 中有与此类似的要求,但它不允许我这样做。我的要求和上面的不完全一样,我简化了。
还有一个问题,我正在尝试对使用以下查询获得的结果进行 XML 输出。但问题是当我调用 XMLFOREST
函数时,它限制我只有一个列作为输入(在下面的示例中,A*B
它不允许)。
SELECT XMLELEMENT (
NAME "DATA",
XMLAGG (XMLELEMENT (NAME "DJ_STOCK", (XMLFOREST (A, B, A * B)))))
FROM (SELECT *
FROM (SELECT RTRIM (RTRIM (6.0000), '.') A,
RTRIM (RTRIM (6.0000), '.') B
FROM SYSIBM.SYSDUMMY1))
我可以在内部查询中执行 A*B
并将其称为 C
然后从 xmlforest
函数调用,但我的实际情况不允许我这样做,因为性能。任何解决方法?
我使用的是 DB2 9.5 版本
我无法帮助您进行 XMLFOREST 查询,除非可以选择连接数据,尽管您可以查看 IBM 页面。IBM XMLFOREST
您尝试进行的第一个查询可以是这样的:
SELECT test
FROM ( SELECT 'test' AS test
FROM DUAL) A
虽然,我不明白为什么你会想要这样做而不是仅仅调用 table,因为你没有对数据做任何事情。
希望对您有所帮助。
通用 table 表达式(您称之为 WITH
子句)的全部目的是避免子查询,主要是为了提高可读性。随后,CTE被用在最外层SELECT
:
WITH A (B) AS (SELECT 'test' FROM DUAL)
select * from
(SELECT *
FROM A )
请注意,您必须为计算列提供名称(B
用于上面示例中的文字值 'test'
)。
我对 DB2 不熟悉,在 Oracle 中我们可以执行以下操作
select * from
(WITH A AS (SELECT 'test' FROM DUAL)
SELECT *
FROM A )
我在 DB2 中有与此类似的要求,但它不允许我这样做。我的要求和上面的不完全一样,我简化了。
还有一个问题,我正在尝试对使用以下查询获得的结果进行 XML 输出。但问题是当我调用 XMLFOREST
函数时,它限制我只有一个列作为输入(在下面的示例中,A*B
它不允许)。
SELECT XMLELEMENT (
NAME "DATA",
XMLAGG (XMLELEMENT (NAME "DJ_STOCK", (XMLFOREST (A, B, A * B)))))
FROM (SELECT *
FROM (SELECT RTRIM (RTRIM (6.0000), '.') A,
RTRIM (RTRIM (6.0000), '.') B
FROM SYSIBM.SYSDUMMY1))
我可以在内部查询中执行 A*B
并将其称为 C
然后从 xmlforest
函数调用,但我的实际情况不允许我这样做,因为性能。任何解决方法?
我使用的是 DB2 9.5 版本
我无法帮助您进行 XMLFOREST 查询,除非可以选择连接数据,尽管您可以查看 IBM 页面。IBM XMLFOREST
您尝试进行的第一个查询可以是这样的:
SELECT test
FROM ( SELECT 'test' AS test
FROM DUAL) A
虽然,我不明白为什么你会想要这样做而不是仅仅调用 table,因为你没有对数据做任何事情。
希望对您有所帮助。
通用 table 表达式(您称之为 WITH
子句)的全部目的是避免子查询,主要是为了提高可读性。随后,CTE被用在最外层SELECT
:
WITH A (B) AS (SELECT 'test' FROM DUAL)
select * from
(SELECT *
FROM A )
请注意,您必须为计算列提供名称(B
用于上面示例中的文字值 'test'
)。