使用显示的查询时,我收到错误。
不支持声明 SQL 构造或语句。
帮助我找到一个合适的解决方案。
DECLARE @maxcount1 float
DECLARE @maxcount0 float
DECLARE @start datetime
SET @start = getdate() - 2
DECLARE @end datetime
SET @end= getdate() + 2
SELECT @maxcount1 = max(OnTimeCount),@maxcount0 = max(DueTimeCount)
FROM (SELECT DISTINCT COUNT(DISTINCT CASE WHEN ontime = 1 THEN sl_no END) AS OnTimeCount, COUNT(DISTINCT CASE WHEN ontime = 0 THEN sl_no END) AS DueTimeCount FROM tbl_splited_details
WHERE (uploaded_date BETWEEN @start AND @end) GROUP BY Site_ID) AS s
SELECT DISTINCT Site_ID, OnTimeCount, DueTimeCount,
round((cast((OnTimeCount*100) AS float)/@maxcount1), 2)AS percentage1 , round((cast((DueTimeCount *100)AS float)/@maxcount1), 2) AS percentage0
FROM (SELECT DISTINCT Site_ID, COUNT(DISTINCT CASE WHEN ontime = 1 THEN sl_no END) AS OnTimeCount,
COUNT(DISTINCT CASE WHEN ontime = 0 THEN sl_no END) AS DueTimeCount
FROM tbl_splited_details WHERE (uploaded_date BETWEEN @start AND @end) GROUP BY Site_ID) AS s
据我所知,你使用以下语法:
DECLARE @start datetime = getdate() - 2
此 DECLARE 语法仅在 SQL Server 2008 及更高版本中受支持。在使用 SQL Server 2005 的情况下,必须使用较旧的语法:
DECLARE @start datetime
SET @start = getdate() - 2