Code: Select all
DECLARE @daydebt INT,
@CurrentMonths INT,
@getdate DATETIME,
@AccountId INT,
@IsPlanned BIT,
@PlannedPeriod INT
SELECT @daydebt = ( SELECT [s].[value]
FROM [Services].[Setting] AS s
WHERE [s].[guid] = '826C4666-F79C-4558-A0BB-2D5A428FCE1B'
),
@CurrentMonths = ( SELECT [s].[value]
FROM [Services].[Setting] AS s
WHERE [s].[guid] = 'E6AC6284-6983-46E1-9A9D-D110BE68E954'
),
@getdate = GETDATE()
,@AccountId = :AccountId
,@IsPlanned = :IsPlanned
,@PlannedPeriod = :PlannedPeriod
IF EXISTS ( SELECT *
FROM TempDB..sysobjects
WHERE id = OBJECT_ID(N'TempDB..#DetailBill') )
BEGIN
DROP TABLE #DetailBill
END
CREATE TABLE #DetailBill
(
AccountId INT,
PeriodFrom SMALLDATETIME,
PeriodTo SMALLDATETIME,
Summ DECIMAL(16, 2),
Quantity INT,
StartScore VARCHAR(30),
EndScore VARCHAR(30),
[Type] INT
)
IF EXISTS (SELECT * FROM TempDB.sys.objects O WHERE O.Object_id = Object_id(N'TempDB..#TempDetailBill'))
begin
drop table #TempDetailBill
end
SELECT Bill.AccountId, Bill.PointId,
case when datediff(day,Bill.Date,@GetDate)>=@daydebt and (Bill.CalcMethod in (1,2) OR Bill.DocumentTypeId = 11) -- борги
then 1 when Bill.CalcMethod in (3,5,6) then 3 -- тіпо плановий
when Bill.DocumentTypeId=5 AND Bill.IsIncome = 0 then 7 -- перерахунок по субсидії
when datediff(day,Bill.Date,@GetDate)0
AND (Bill.TotalSumm - ISNULL(Used.UsedByPaid,0.00) - ISNULL(Used.UsedBySubsidy,0.00) - ISNULL(Used.UsedByWriteoff,0.00) > 0
OR datediff(day,Bill.date,@GetDate) 1
GROUP BY TDB.AccountId
HAVING SUM(TDB.[UsedSummByPaid]) > 0
UNION ALL
SELECT TDB.AccountId ,
NULL ,
NULL ,
-SUM(TDB.[UsedSummBySubsidy]),
NULL,
NULL,
NULL,
6 AS [Type]
FROM #TempDetailBill AS TDB
WHERE [Type] 1
GROUP BY TDB.AccountId
HAVING SUM(TDB.[UsedSummBySubsidy]) > 0
--UNION ALL
/*SELECT GI.AccountId ,
NULL ,
NULL ,
-GI.[Credit],
NULL,
NULL,
NULL,
9 AS [Type]
FROM #GeneralInfo GI WHERE [Credit]>0*/
SELECT * FROM #DetailBill
Error
Code: Select all
Incorrect syntax near '('. Incorrect syntax near the keyword 'AND'.
When viewing Report, in SQL Server Profiler:
Code: Select all
exec sp_executesql N' DECLARE @daydebt INT,
@CurrentMonths INT,
@getdate DATETIME,
@AccountId INT,
@IsPlanned BIT,
@PlannedPeriod INT
SELECT @daydebt = ( SELECT [s].[value]
FROM [Services].[Setting] AS s
WHERE [s].[guid] = ''826C4666-F79C-4558-A0BB-2D5A428FCE1B''
),
@CurrentMonths = ( SELECT [s].[value]
FROM [Services].[Setting] AS s
WHERE [s].[guid] = ''E6AC6284-6983-46E1-9A9D-D110BE68E954''
),
@getdate = GETDATE()
,@AccountId = @P1
,@IsPlanned = @P2
,@PlannedPeriod = @P3
IF EXISTS ( SELECT *
FROM TempDB..sysobjects
WHERE id = OBJECT_ID(N''TempDB..#DetailBill'') )
BEGIN
DROP TABLE #DetailBill
END
CREATE TABLE #DetailBill
(
AccountId INT,
PeriodFrom SMALLDATETIME,
PeriodTo SMALLDATETIME,
Summ DECIMAL(16, 2),
Quantity INT,
StartScore VARCHAR(30),
EndScore VARCHAR(30),
[Type] INT
)
IF EXISTS (SELECT * FROM TempDB.sys.objects O WHERE O.Object_id = Object_id(N''TempDB..#TempDetailBill''))
begin
drop table #TempDetailBill
end
SELECT Bill.AccountId, Bill.PointId,
case when datediff(day,Bill.Date,@GetDate)>=@daydebt and (Bill.CalcMethod in (1,2) OR Bill.DocumentTypeId = 11) /* борги*/
then 1 when Bill.CalcMethod in (3,5,6) then 3 /* тіпо плановий*/
when Bill.DocumentTypeId=5 AND Bill.IsIncome = 0 then 7 /* перерахунок по субсидії*/
when datediff(day,Bill.Date,@GetDate)0
AND (Bill.TotalSumm - ISNULL(Used.UsedByPaid,0.00) - ISNULL(Used.UsedBySubsidy,0.00) - ISNULL(Used.UsedByWriteoff,0.00) > 0
OR datediff(day,Bill.date,@GetDate) 1
GROUP BY TDB.AccountId
HAVING SUM(TDB.[UsedSummByPaid]) > 0
UNION ALL
SELECT TDB.AccountId ,
NULL ,
NULL ,
-SUM(TDB.[UsedSummBySubsidy]),
NULL,
NULL,
NULL,
6 AS [Type]
FROM #TempDetailBill AS TDB
WHERE [Type] 1
GROUP BY TDB.AccountId
HAVING SUM(TDB.[UsedSummBySubsidy]) > 0
/*UNION ALL*/
/*SELECT GI.AccountId ,
NULL ,
NULL ,
-GI.[Credit],
NULL,
NULL,
NULL,
9 AS [Type]
FROM #GeneralInfo GI WHERE [Credit]>0*/
SELECT * FROM #DetailBill',N'@P1 int,@P2 smallint,@P3 int,@P4 int',17689,0,0,17689
This occurs when the value stamped in the Master and MasterFields.
why the modified script and error?