'How can I add an attribute to the root

Is there a way I can add the StartDate and EndDate variables to the Report node? I tried to add select @StartDate as 'StartDate',@EndDate as 'StartDate' after the ROOT('Report') but that returns a different result.

Looking for something like this?

<Report>
<StartDate>03/01/2022</StartDate>
<EndDate>03/30/2022</EndDate>
  <Member>
    <UserActivityLogID>179</UserActivityLogID>
    <LogDate>03/10/2022</LogDate>
  </Member>
  <Member>
    <UserActivityLogID>180</UserActivityLogID>
    <LogDate>03/10/2022</LogDate>
  </Member>
</Report>

sp

 IF @StartDate IS NULL 
        BEGIN
            SET @StartDate = DateAdd(dd, -90, GetDate())
        END
    IF @EndDate IS NULL
        BEGIN
            SET @EndDate = GetDate()
        END
    BEGIN
        SELECT [UserActivityLogID]
              ,LogDate =Convert(varchar(10),[LogDate],101)
          and LogDate BETWEEN @StartDate AND @EndDate
          FROM [UserActivityLog]
          order by LogDate desc
        FOR XML PATH('Member'),
        ROOT('Report')
    END


Solution 1:[1]

At a best guess, with no meaningful sample data nor expected results, what you want is:

SELECT UserActivityLogID AS [Member/UserActivityLogID],
       @StartDate AS [@StartDate],
       @EndDate AS [@EndDate]
FROM dbo.YourTable --You didn't even have a from in your query
WHERE --This was also missing
      LogDate >= @StartDAte
  AND LogDAte <= @EndDate
FOR XML PATH ('Report');

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Larnu