【发布时间】:2016-05-08 01:01:55
【问题描述】:
发帖前查了几个问题,还是不能确定下面代码的语法有什么问题?我收到两个END 的相同错误。谢谢!
IF @UserId =''
BEGIN
;WITH cte AS (
SELECT * FROM (
SELECT [EntryId],
CAST(ROW_NUMBER() OVER (ORDER BY Date DESC) AS INT) AS RN_PARENT,
0 AS RN_CHILD
FROM Entries
WHERE [EntryDepthness] = 0 AND DiscussionWallId = @DiscussionWallId
) AS Main
WHERE ((RN_PARENT BETWEEN(@PageIndex -1) * (@PageSize) + 1 AND (((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1))
UNION ALL
SELECT e.[EntryId],
0 AS RN_PARENT,
CAST(ROW_NUMBER() OVER (ORDER BY e.Date DESC) AS INT) AS RN_CHILD
FROM Entries e
INNER JOIN cte v ON v.EntryId = e.ParentEntryId
WHERE e.EntryDepthness = 1
)
END
ELSE
BEGIN
;WITH cte AS (
SELECT * FROM (
SELECT [EntryId],
CAST(ROW_NUMBER() OVER (ORDER BY Date DESC) AS INT) AS RN_PARENT,
0 AS RN_CHILD
FROM Entries
WHERE [EntryDepthness] = 0 AND DiscussionWallId = @DiscussionWallId AND
UserId IN (
SELECT UserId FROM GroupStudentAssignments
WHERE MemberId=@UserId AND GroupId IN (SELECT GroupId FROM GroupDiscussionRegistrations WHERE DiscussionWallId=@DiscussionWallId)
)
) AS Main
WHERE ((RN_PARENT BETWEEN(@PageIndex -1) * (@PageSize) + 1 AND (((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1))
UNION ALL
SELECT e.[EntryId],
0 AS RN_PARENT,
CAST(ROW_NUMBER() OVER (ORDER BY e.Date DESC) AS INT) AS RN_CHILD
FROM Entries e
INNER JOIN cte v ON v.EntryId = e.ParentEntryId
WHERE e.EntryDepthness = 1
)
END
【问题讨论】:
-
在每个 CTE 之后添加查询的其余部分...
标签: sql sql-server tsql common-table-expression