Please try the following solution.
As you can see, aliases allow to compose XML with attributes.
SQL
-- DDL and sample data population, start
DECLARE @tbl TABLE (ID INT IDENTITY PRIMARY KEY,
username VARCHAR(20),
email VARCHAR(128),
firstname VARCHAR(20),
lastname VARCHAR(20),
role VARCHAR(20),
timezone CHAR(3),
jobcode VARCHAR(10)
);
INSERT @tbl (username, email, firstname, lastname, role, timezone, jobcode) VALUES
('jdoe', 'jd@gmail.com', 'John', 'Doe', 'acct', 'est', 'j001'),
('jdoe', 'jd@gmail.com', 'John', 'Doe', 'acct', 'est', 'j002');
-- DDL and sample data population, end
SELECT * FROM @tbl;
SELECT username AS [@username]
, email AS [@email]
, firstname AS [@firstname]
, lastname AS [@lastname]
, role AS [Role/@role]
, timezone AS [Timezone/@timezone]
, (
SELECT jobcode AS [@job]
FROM @tbl AS c
WHERE c.email = p.email
FOR XML PATH('Job'), TYPE
)
FROM @tbl AS p
GROUP BY username, email, firstname, lastname, role, timezone
FOR XML PATH('Employee'), TYPE, ROOT('Employees');
Output
<Employees>
<Employee username="jdoe" email="jd@gmail.com" firstname="John" lastname="Doe">
<Role role="acct" />
<Timezone timezone="est" />
<Job job="j001" />
<Job job="j002" />
</Employee>
</Employees>