关键字 ‘with‘ 附近有语法错误。如果此语句是公用表表达式、xmlnamespaces 子句或者更改跟踪上下文子句,那么前一个语句必须以分号结尾

关键字 'with' 附近有语法错误。如果此语句是公用表表达式、xmlnamespaces 子句或者更改跟踪上下文子句,那么前一个语句必须以分号结尾

问题SQL语句


DECLARE @YYMM VARCHAR(10) = '202304'
WITH
EmpDayData as
(
	SELECT	
		EmpID,SUM(ISNULL(WorkTime,0)+isnull(OverTime1,0)+isnull(OverTime2,0)+isnull(OverTime3,0)) AS [总工时]
	FROM AttDayData
	WHERE CONVERT(VARCHAR(6),YYMMDD,112) = @YYMM
	AND EmpID IN (
		SELECT A.EmpID FROM (
			SELECT	EmpID,PartNo FROM PerEmpDayDoc
			WHERE CONVERT(VARCHAR(6),YYMMDD,112) = @YYMM
			GROUP BY EmpID,PartNo
		) A
		GROUP BY A.EmpID HAVING COUNT(A.EmpID) > 1
	)
	GROUP BY EmpID
)

SELECT * FROM EmpDayData

问题原因

在异常提示中已经说的很明白了,“前一个语句必须以分号结尾”它是指需要在with前面添加一个分号,不是在with语句后添加。

修改后的SQL如下


DECLARE @YYMM VARCHAR(10) = '202304'



;WITH
EmpDayData as
(
	SELECT	
		EmpID,SUM(ISNULL(WorkTime,0)+isnull(OverTime1,0)+isnull(OverTime2,0)+isnull(OverTime3,0)) AS [总工时]
	FROM AttDayData
	WHERE CONVERT(VARCHAR(6),YYMMDD,112) = @YYMM
	AND EmpID IN (
		SELECT A.EmpID FROM (
			SELECT	EmpID,PartNo FROM PerEmpDayDoc
			WHERE CONVERT(VARCHAR(6),YYMMDD,112) = @YYMM
			GROUP BY EmpID,PartNo
		) A
		GROUP BY A.EmpID HAVING COUNT(A.EmpID) > 1
	)
	GROUP BY EmpID
)

SELECT * FROM EmpDayData

修改后问题解决

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值