Reputation: 4125
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'. 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.
I tried to add ;
before WITH
, but it still does not work. How to use my hierarchical query as a subquery ?
Upvotes: 0
Views: 623
Reputation: 740
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
Upvotes: 1