Hi experts:
DECLARE @xml NVARCHAR(MAX)
DECLARE @body NVARCHAR(MAX)
DECLARE @currDate Date = GETDATE();
DECLARE @7DaysAgo Date = DateAdd(Day, -7, @currDate)
SET @xml = CAST((Select ParentOrgId AS 'td', '', ProNumber AS 'td', '', ParentPrimaryRef AS 'td', '', COUNT() AS 'Nbr of Dups Within Past 7 Days' AS 'td' <<--- Incorrect syntax near the keyword AS'
from shipments
where ParentOrgId = 128 and CreateDT >= @7DaysAgo
Group by ParentOrgId, ParentPrimaryRef, ProNumber
Having COUNT() > 1
FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX));
I need for the report to show the number of Dups so how can I get around the error? Thanks
Suggest eliminating single quotes around object identifiers. Columns, tables, and aliases should use square brackets instead. Only use single quotes to delimit string literals.
1 Like
Thanks for the tip, @robert_volk
DECLARE @xml NVARCHAR(MAX)
DECLARE @body NVARCHAR(MAX)
DECLARE @currDate Date = GETDATE();
DECLARE @7DaysAgo Date = DateAdd(Day, -7, @currDate)
SET @xml = CAST((Select ParentOrgId AS [td], '', ProNumber AS [td], '', ParentPrimaryRef AS [td], '', COUNT() AS [Nbr of Dups Within Past 7 Days] AS [td] <<--- Incorrect syntax near the keyword AS'
from shipments
where ParentOrgId = 128 and CreateDT >= @7DaysAgo
Group by ParentOrgId, ParentPrimaryRef, ProNumber
Having COUNT() > 1
FOR XML PATH([tr]), ELEMENTS ) AS NVARCHAR(MAX));
i still get the same sytanx error
Ahh, I missed something. Still needs:
-
COUNT() needs to be COUNT(*)
-
PATH needs to be PATH('tr'), that syntax requires single quotes. Sorry I missed that earlier.
-
AS [Nbr of Dups Within Past 7 Days] AS [td], this is double-aliasing, you just want TD.
1 Like
All valid point,s @robert_volk but I still get the same error near AS td
DECLARE @xml NVARCHAR(MAX)
DECLARE @body NVARCHAR(MAX)
DECLARE @currDate Date = GETDATE();
DECLARE @7DaysAgo Date = DateAdd(Day, -7, @currDate)
SET @xml = CAST((Select ParentOrgId AS [td], '', ProNumber AS [td], '', ParentPrimaryRef AS [td], '', COUNT() AS [Nbr of Dups Within Past 7 Days] AS td ---<<<< syntax error
from shipments
where ParentOrgId = 128 and CreateDT >= @7DaysAgo
Group by ParentOrgId, ParentPrimaryRef, ProNumber
Having COUNT() > 1
FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX));
The Having COUNT(*) > 1 line IS correct, it contains a asterisk, the site editor is not showing it
COUNT() AS [Nbr of Dups Within Past 7 Days] AS td
needs to be:
COUNT(*) AS td
SET @xml = CAST((Select ParentOrgId AS [td], '', ProNumber AS [td], '', ParentPrimaryRef AS [td], '', COUNT(Asterisk) AS [Nbr of Dups Within Past 7 Days] AS td <<<< syntax error here
from shipments
where ParentOrgId = 128 and CreateDT >= @7DaysAgo
Group by ParentOrgId, ParentPrimaryRef, ProNumber
Having COUNT(Asterisk) > 1
FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX));
COUNT(*) AS [Nbr of Dups Within Past 7 Days] td Error: incorrect syntax near td
Sorry, I don't know how else to say this:
YOU CANNOT HAVE
COUNT(*) AS [Nbr of Dups Within Past 7 Days] td
IT HAS TO BE:
COUNT(*) AS td
If you want it to show as a TD element in the generated XML.
2 Likes
I apologize for misinterpreting your post, @robert_volk. Thank you.
For those who are still interested... this is the final code:
DECLARE @xml NVARCHAR(MAX)
DECLARE @body NVARCHAR(MAX)
DECLARE @currDate Date = GETDATE();
DECLARE @7DaysAgo Date = DateAdd(Day, -7, @currDate)
SET @xml = CAST((Select ParentOrgId AS [td], '', ProNumber AS [td], '', ParentPrimaryRef AS [td], '', COUNT() AS td
from shipments
where ParentOrgId = 128 and CreateDT >= @7DaysAgo
Group by ParentOrgId, ParentPrimaryRef, ProNumber
Having COUNT() > 1
FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX));
SET @body ='
Duplicate Shipments in last 7 Days
'
SET @body = @body + @xml +'
Parent Org ID | Pro Number | Parent Primary Ref |
Nbr of Dups Within Past 7 Days |
'