/*
Why are you using temp table and using subquery? A subquery is not as efficient as a join or a derived table or an exists. The latter being the most optimal. This would have been far more efficient in typing and execution.
You have allocated a data type varchar(50) for the database name when this should have been syname or nvarchar(128) as per the system tables that you are refering to. This would fail for database with a name > 50 characters
I would like to have had the date of the last backup if I'm checking.
*/
DECLARE
@num_of_days int
SELECT @num_of_days = 7
SELECT
a.[name]
,b.DateLogLastBackedUp
,CASE
WHEN b.DateLogLastBackedUp IS NULL THEN 1
ELSE 0
ENDAS TransactionLogNeverBackedUpIndicator
FROM
master.dbo.sysdatabases a
LEFT JOIN
(-- gets the latest available transaction log backup if exists
SELECT
database_name
,MAX(backup_start_date)AS DateLogLastBackedUp
FROM
msdb.dbo.backupset
WHERE
type = 'L'-- Log backups only
AND
DATEDIFF(dd,backup_start_date,GETDATE()) > @num_of_days
GROUP BY
database_name
) b ON a.[name] = b.DateLogLastBackedUp
WHERE
DATABASEPROPERTYEX(a.[name],'Recovery') = 'FULL'