22 lines
1.1 KiB
Transact-SQL
22 lines
1.1 KiB
Transact-SQL
create function [fds_wgd_lastEmails](@count int = 10)
|
|
returns table
|
|
as return
|
|
|
|
-- [config] is NOT NULL but a logging path may have stored '' (or otherwise non-JSON text).
|
|
-- OPENJSON/JSON_QUERY raise on that and took the whole widget down, so the JSON is normalised
|
|
-- once (invalid -> '{}') before anything parses it; a WHERE ISJSON() alone is not guaranteed to
|
|
-- be evaluated ahead of the CROSS APPLY.
|
|
SELECT TOP (@count)
|
|
[Betreff] = oj.[subject],
|
|
[Empfänger] = (SELECT STRING_AGG(
|
|
CASE WHEN CHARINDEX('<', [value]) > 0
|
|
THEN SUBSTRING([value], CHARINDEX('<', [value]) + 1, CHARINDEX('>', [value]) - CHARINDEX('<', [value]) - 1)
|
|
ELSE [value]
|
|
END, ', ')
|
|
FROM OPENJSON(JSON_QUERY(j.[cfg], '$.to'))),
|
|
[attachments] = (SELECT STRING_AGG([value], ', ') FROM OPENJSON(JSON_QUERY(j.[cfg], '$.attachments'))),
|
|
[gesendet] = FORMAT(el.DateSent, 'dd.MM.yy', 'de-DE')
|
|
FROM [dbo].[fds__emaillog] as el
|
|
CROSS APPLY (SELECT [cfg] = IIF(ISJSON(el.[config]) = 1, el.[config], N'{}')) as j
|
|
CROSS APPLY OPENJSON(j.[cfg], '$') WITH ( [subject] nvarchar(255) '$.subject' ) as oj
|
|
order by [DateSent] desc |