[英]SQL subquery with CTE
I have a hierarchical query with Common Table Expressions: 我有一个通用表表达式的层次结构查询:
WITH Revision(REV, MonitoringGroupId, BusinessLineId, REVTYPE, REVEND) AS
(
SELECT REV, MonitoringGroupId, BusinessLineId, REVTYPE, REVEND
FROM MonitoringGroupBusinessLine_AUD
WHERE REV = 1045
UNION ALL
SELECT rev.REV, rev.MonitoringGroupId, rev.BusinessLineId, rev.REVTYPE, rev.REVEND
FROM MonitoringGroupBusinessLine_AUD rev
INNER JOIN Revision ON rev.REVEND = Revision.REV
)
SELECT
DISTINCT
MonitoringGroupId,
BusinessLineId,
IIF(REVTYPE = 2, 'REMOVE', 'ADD') as Operation
FROM Revision
And I want to use it in as a sub-query, something like that: 我想将其用作子查询,例如:
SELECT audit.MonitoringGroupId, audit.BusinessLineId, audit.Operation
FROM
(
WITH Revision(REV, MonitoringGroupId, BusinessLineId, REVTYPE, REVEND) AS
(
SELECT REV, MonitoringGroupId, BusinessLineId, REVTYPE, REVEND
FROM MonitoringGroupBusinessLine_AUD
WHERE REV = 1045
UNION ALL
SELECT rev.REV, rev.MonitoringGroupId, rev.BusinessLineId, rev.REVTYPE, rev.REVEND
FROM MonitoringGroupBusinessLine_AUD rev
INNER JOIN Revision ON rev.REVEND = Revision.REV
)
SELECT
DISTINCT
MonitoringGroupId,
BusinessLineId,
IIF(REVTYPE = 2, 'REMOVE', 'ADD') as Operation
FROM Revision
) audit
I have an error: 我有一个错误:
Incorrect syntax near the keyword 'with'. 关键字“ with”附近的语法不正确。 If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon. 如果此语句是公用表表达式,xmlnamespaces子句或更改跟踪上下文子句,则前一条语句必须以分号终止。
I tried to add ;
我试图添加;
before WITH
, but it still does not work. 在WITH
之前,但仍然无法正常工作。 How to use my hierarchical query as a subquery ? 如何将分层查询用作子查询?
You make the subquery in the output. 您在输出中进行子查询。
;WITH Revision(REV, MonitoringGroupId, BusinessLineId, REVTYPE, REVEND) AS
(
SELECT REV, MonitoringGroupId, BusinessLineId, REVTYPE, REVEND
FROM MonitoringGroupBusinessLine_AUD
WHERE REV = 1045
UNION ALL
SELECT rev.REV, rev.MonitoringGroupId, rev.BusinessLineId, rev.REVTYPE, rev.REVEND
FROM MonitoringGroupBusinessLine_AUD rev
INNER JOIN Revision ON rev.REVEND = Revision.REV
)
SELECT audit.MonitoringGroupId, audit.BusinessLineId, audit.Operation
FROM
(
SELECT
DISTINCT
MonitoringGroupId,
BusinessLineId,
IIF(REVTYPE = 2, 'REMOVE', 'ADD') as Operation
FROM Revision
) audit
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.