当子查询跟在 =, !=, <, <=, >, >= 或子查询在 SQL 中用作表达式时,这是不允许的
This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression inSQL
需要子查询的计数
--DM 之前达到但再次没有达到最后 - 60 天 - VIP
SET @MainQuery = 'SET @DMNotReachedAgainForLastSixtyDaysVIP = (SELECT COUNT(DISTINCT SMSCH.Cgvak_Comh_Icode)
FROM Cgvak_Sms_Company_Header SMSCH
JOIN Cgvak_Sms_Company_Detail SMSCD ON SMSCD.Cgvak_Comd_Comh_Icode = SMSCH.Cgvak_Comh_Icode
JOIN [dbo].[Cgvak_Sms_User_Master] SMSUM ON SMSUM.Cgvak_User_Icode = SMSCH.Cgvak_Comh_AssignBDE_Icode
WHERE (SMSCD.Cgvak_Comd_Call_date >= DATEADD(DAY, -60, GETDATE())) AND SMSCD.Cgvak_Comd_SpoketoStatus = ''N'' AND ' + RTRIM(@DynamicQuery) + '
AND SMSCD.Cgvak_Comd_Comh_Icode IN (SELECT DISTINCT CSCH.Cgvak_Comh_Icode FROM Cgvak_Sms_Company_Header CSCH
JOIN Cgvak_Sms_Company_Detail CSCD ON CSCD.Cgvak_Comd_Comh_Icode = CSCH.Cgvak_Comh_Icode
WHERE CSCH.Cgvak_Comh_VIPAC = ''Y'' AND CSCD.Cgvak_Comd_Call_date <= DATEADD(DAY, -60, GETDATE())
AND CSCH.Cgvak_Comh_DMSpokeStatus = 1 AND CSCH.Cgvak_Comh_Icode = CSCD.Cgvak_Comd_Comh_Icode))
EXECUTE sp_executesql @MainQuery , N'@DMNotReachedAgainForLastSixtyDaysVIP BIGINT OUTPUT', @DMNotReachedAgainForLastSixtyDaysVIP = @DMNotReachedAgainForLastSixtyDaysVIP OUTPUT
我正在将动态查询从前端传递到此 SP。但它显示,子查询返回了超过 1 个值。当子查询跟在 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
我没有发现您发布的代码有任何问题。问题一定在RTRIM(@DynamicQuery)
.
需要子查询的计数
--DM 之前达到但再次没有达到最后 - 60 天 - VIP
SET @MainQuery = 'SET @DMNotReachedAgainForLastSixtyDaysVIP = (SELECT COUNT(DISTINCT SMSCH.Cgvak_Comh_Icode)
FROM Cgvak_Sms_Company_Header SMSCH
JOIN Cgvak_Sms_Company_Detail SMSCD ON SMSCD.Cgvak_Comd_Comh_Icode = SMSCH.Cgvak_Comh_Icode
JOIN [dbo].[Cgvak_Sms_User_Master] SMSUM ON SMSUM.Cgvak_User_Icode = SMSCH.Cgvak_Comh_AssignBDE_Icode
WHERE (SMSCD.Cgvak_Comd_Call_date >= DATEADD(DAY, -60, GETDATE())) AND SMSCD.Cgvak_Comd_SpoketoStatus = ''N'' AND ' + RTRIM(@DynamicQuery) + '
AND SMSCD.Cgvak_Comd_Comh_Icode IN (SELECT DISTINCT CSCH.Cgvak_Comh_Icode FROM Cgvak_Sms_Company_Header CSCH
JOIN Cgvak_Sms_Company_Detail CSCD ON CSCD.Cgvak_Comd_Comh_Icode = CSCH.Cgvak_Comh_Icode
WHERE CSCH.Cgvak_Comh_VIPAC = ''Y'' AND CSCD.Cgvak_Comd_Call_date <= DATEADD(DAY, -60, GETDATE())
AND CSCH.Cgvak_Comh_DMSpokeStatus = 1 AND CSCH.Cgvak_Comh_Icode = CSCD.Cgvak_Comd_Comh_Icode))
EXECUTE sp_executesql @MainQuery , N'@DMNotReachedAgainForLastSixtyDaysVIP BIGINT OUTPUT', @DMNotReachedAgainForLastSixtyDaysVIP = @DMNotReachedAgainForLastSixtyDaysVIP OUTPUT
我正在将动态查询从前端传递到此 SP。但它显示,子查询返回了超过 1 个值。当子查询跟在 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
我没有发现您发布的代码有任何问题。问题一定在RTRIM(@DynamicQuery)
.