[英]Select statement and WITH statement error
I would like to select deptUserCount
and childDeptCount
at once in one procedure. 我想在一个过程中一次选择deptUserCount
和childDeptCount
。
ALTER PROCEDURE [dbo].[sp_dept_user_select]
@dept_no INT,
@company_no INT
AS
BEGIN
SET NOCOUNT ON;
SELECT
( SELECT COUNT(U.user_no)
FROM [dbo].[tb_user] U WITH(NOLOCK)
INNER JOIN [dbo].[tb_dept_user] DU WITH(NOLOCK)
ON U.user_no = DU.user_no
WHERE DU.dept_no = @dept_no
AND U.company_no = @company_no
AND U.user_level < 200
) AS deptUserCount
,( WITH tblChild AS
(
SELECT dept_no, parent_dept_no, name
FROM [dbo].[tb_dept] D WITH(NOLOCK)
WHERE parent_dept_no = 2
AND D.company_no = 1
UNION ALL
SELECT D.dept_no, D.parent_dept_no, D.name
FROM [dbo].[tb_dept] D WITH(NOLOCK)
INNER JOIN tblChild
ON D.parent_dept_no = tblChild.dept_no
WHERE D.company_no = 1
)
SELECT COUNT(D.dept_no)
FROM [dbo].[tb_dept] D WITH(ROWLOCK)
WHERE dept_no IN (SELECT dept_no FROM tblChild)
) AS childDeptCount
END
This is the code that I made right now. 这是我现在编写的代码。 But there is an error at the WITH statement saying 但是WITH语句说有一个错误
incorrect syntax error 错误的语法错误How should I fix this error? 我该如何解决该错误? Or do I have to make a separate procedure to get what I want? 还是我必须做一个单独的程序才能得到我想要的东西?
You should go for something like this 你应该去做这样的事情
WITH
deptUserCount AS (
SELECT ...
),
tblChild AS (
SELECT ...
UNION ALL
SELECT ... FROM tblChild ...
)
SELECT ...
FROM tblChild JOIN deptUserCount...
you can try like below 你可以尝试如下
with deptUserCount as
( SELECT COUNT(U.user_no) as dptcount
FROM [dbo].[tb_user] U WITH(NOLOCK)
INNER JOIN [dbo].[tb_dept_user] DU WITH(NOLOCK)
ON U.user_no = DU.user_no
WHERE DU.dept_no = @dept_no
AND U.company_no = @company_no
AND U.user_level < 200
) ,tblChild as
(
SELECT dept_no, parent_dept_no, name
FROM [dbo].[tb_dept] D WITH(NOLOCK)
WHERE parent_dept_no = 2
AND D.company_no = 1
UNION ALL
SELECT D.dept_no, D.parent_dept_no, D.name
FROM [dbo].[tb_dept] D WITH(NOLOCK)
INNER JOIN tblChild
ON D.parent_dept_no = tblChild.dept_no
WHERE D.company_no = 1
), childDeptCount as
(
SELECT COUNT(D.dept_no) as childdptCnt
FROM [dbo].[tb_dept] D WITH(ROWLOCK)
WHERE dept_no IN (SELECT dept_no FROM tblChild)
) select a.childdptCnt,b.dptcount from childDeptCount a,deptUserCount b
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.