I've tried looking at other answers to this, but none seem to match/work for me.
I have the below SQL query running perfectly in SSMS. However, I want to add a column to show the database name from where it is pulling the data from as I am running the query in multiple databases with %AccountsLive.
Is there a way to be able to do this? Thanks in advance!
DECLARE @Sql NVARCHAR(MAX);
SET @Sql =
STUFF(
(SELECT
NCHAR(10) + N'UNION ALL' + NCHAR(10) +
N'SELECT
ST_ALOC_POINTER COLLATE DATABASE_DEFAULT AS ''Cust_Code'',
ST_TRANTYPE COLLATE DATABASE_DEFAULT AS ''Transaction'',
ST_HEADER_REF COLLATE DATABASE_DEFAULT AS ''Reference'',
ST_GROSS AS ''Local_Gross'',
ST_CURRENCYCODE COLLATE DATABASE_DEFAULT AS ''Currency'',
ST_CURR_VALU AS ''Foreign_Gross'',
ST_DESCRIPTION COLLATE DATABASE_DEFAULT AS ''Description''
FROM ' + QUOTENAME(d.name) + N'.dbo.SL_TRANSACTIONS
WHERE ST_YEAR = ''C''
and ST_PERIODNUMBER = ''1''
and ST_ALOC_POINTER like ''%LC%''
and ST_GROSS <> ''0''
UNION ALL
SELECT
ST_ALOC_POINTER COLLATE DATABASE_DEFAULT AS ''Cust_Code'',
ST_TRANTYPE COLLATE DATABASE_DEFAULT AS ''Transaction'',
ST_HEADER_REF COLLATE DATABASE_DEFAULT AS ''Reference'',
ST_GROSS AS ''Local_Gross'',
ST_CURRENCYCODE COLLATE DATABASE_DEFAULT AS ''Currency'',
ST_CURR_VALU AS ''Foreign_Gross'',
ST_DESCRIPTION COLLATE DATABASE_DEFAULT AS ''Description''
FROM ' + QUOTENAME(d.name) + N'.dbo.SL_TRANSACTIONS
WHERE ST_YEAR = ''C''
and ST_PERIODNUMBER = ''1''
and ST_ALOC_POINTER like ''%CR%''
and ST_GROSS <> ''0'''
FROM sys.databases d
where name like '%AccountsLive'
FOR XML PATH(''), TYPE)
.value('text()[1]','nvarchar(max)'), 1, 11, '');
exec( @Sql );