SQL列名无效

PAUSlE 2018-04-17 09:09:12

select * from ( select *, ROW_NUMBER() OVER(Order by ChildId ) AS RowNumber from ( SELECT TOP 100 C.Id as
ChildId, F.Relationship,C.EName, C.CName, C.Sex,
C.Birthday, C.RegNo, C.CaseNo, C.SocialWorkerId, C.CurrentStatus, U.DisplayName AS SocialWorker, ISNULL
((SELECT TOP (1) GroupName
FROM dbo.GroupRecord
WHERE (ChildId = C.Id)
ORDER BY CreatedOnDate DESC), '') AS CurrentGroup,isnull(F.FCName,F.FEName) as FCName
,
(select COUNT(*) from ContactRecord
where ChildId = C.Id and Situation in('3','6') and Relationship in('父','父,母')) as FCount
,
(select COUNT(*) from ContactRecord
where ChildId = C.Id and Situation in('3','6') and Relationship in('母','父,母')) as MCount

FROM Children AS C
inner join dbo.Family AS F on F.ChildId = C.Id and F.Relationship in('母親','父親')
LEFT OUTER JOIN dbo.Users AS U ON U.UserID = C.SocialWorkerId
where C.id NOT IN(SELECT TOP 0 C.id FROM Children ORDER BY ID DESC) ORDER BY C.ID DESC) AS A
where A.RowNumber BETWEEN 0 AND 3
...全文
369 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2018-04-17
  • 打赏
  • 举报
回复
ORDER BY C.ID DESC)) AS A -- 这里,应该写两个 ),你只写了一个。 where A.RowNumber BETWEEN 0 AND 3
二月十六 2018-04-17
  • 打赏
  • 举报
回复
这个嵌套有点乱啊……试试这样对吗?
SELECT *
FROM
(
    SELECT *,
           ROW_NUMBER() OVER (ORDER BY ChildId) AS RowNumber
    FROM
    (
        SELECT TOP 100
            C.Id AS ChildId,
            F.Relationship,
            C.EName,
            C.CName,
            C.Sex,
            C.Birthday,
            C.RegNo,
            C.CaseNo,
            C.SocialWorkerId,
            C.CurrentStatus,
            U.DisplayName AS SocialWorker,
            ISNULL(
            (
                SELECT TOP (1)
                    GroupName
                FROM dbo.GroupRecord
                WHERE (ChildId = C.Id)
                ORDER BY CreatedOnDate DESC
            ),
            ''
                  ) AS CurrentGroup,
            ISNULL(F.FCName, F.FEName) AS FCName,
            (
                SELECT COUNT(*)
                FROM ContactRecord
                WHERE ChildId = C.Id
                      AND Situation IN ( '3', '6' )
                      AND Relationship IN ( '父', '父,母' )
            ) AS FCount,
            (
                SELECT COUNT(*)
                FROM ContactRecord
                WHERE ChildId = C.Id
                      AND Situation IN ( '3', '6' )
                      AND Relationship IN ( '母', '父,母' )
            ) AS MCount
        FROM Children AS C
            INNER JOIN dbo.Family AS F
                ON F.ChildId = C.Id
                   AND F.Relationship IN ( '母親', '父親' )
            LEFT OUTER JOIN dbo.Users AS U
                ON U.UserID = C.SocialWorkerId
        WHERE C.id NOT IN (
                              SELECT TOP 0 C.id FROM Children ORDER BY ID DESC
                          )
        ORDER BY C.ID DESC
    ) t
) AS A
WHERE A.RowNumber
BETWEEN 0 AND 3;
xiaoxiangqing 2018-04-17
  • 打赏
  • 举报
回复
把表结构也发出来,不然运行不行

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧