Я пытаюсь создать SP для отправки отчета в формате HTML, отсортированного по новым значениям в моем операторе CASE WHEN.Как правило, СЛУЧАЙ, КОГДА МОЖЕТ ЗАКОНЧИТЬСЯ «Статусом партии», тогда я мог бы заказать по «Статусу партии», но это не работает в формате HTML.Сортировка по статусу не работает для меня, так как статус является числовым, и мне нужно это отсортировать по буквенно-цифровым.
SET NOCOUNT ON
DECLARE @Last3BusinessDays as DATETIME, @tableHTML NVARCHAR(MAX)
SET @Last3BusinessDays = (SELECT DATEADD(DAY, CASE (DATEPART(WEEKDAY, GETDATE()) + @@DATEFIRST) % 7
WHEN 1 THEN -4
WHEN 2 THEN -5
ELSE -3
END,
GETDATE()))
If (SELECT count(aq.batchnum) FROM hsi.archivedqueue aq
WHERE aq.status != 8
AND datestarted < @Last3BusinessDays
AND aq.queuename like 'HIM%'
OR aq.queuename = 'MHHS'
OR aq.queuename = 'DX Summaries'
OR aq.queuename = 'HCA') > 0
BEGIN
SET @tableHTML =
N'<H3>The following HIM scans have not been committed in over 72 hours. Please index ASAP.</H3>' +
N'<table border="1">' +
N'<th>Batch #</th>' +
N'<th>Batch Name</th>' +
N'<th>Scan Date-Time</th>' +
N'<th>Status Queue</th>' +
N'<th>Total Documents</th>' +
CAST ( (
SELECT
td = batchnum, '',
td = rtrim(batchname), '',
td = datestarted, '',
td = case
when status = 44 then 'Awaiting Bar Code Processing'
when status = 32 then 'Awaiting QA Review'
when status = 23 then 'Awaiting Document Separation'
when status = 1 then 'Index in Progress'
when status = 0 then 'Awaiting Index'
else 'Other'
end, '',
td = totaldocuments, ''
FROM OB_PRD.hsi.archivedqueue
WHERE status != 8
AND datestarted < @Last3BusinessDays
AND (queuename like 'HIM%'
OR queuename = 'MHHS'
OR queuename = 'DX Summaries'
OR queuename = 'HCA')
ORDER BY status, datestarted DESC
FOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX) ) +
N'</table>'
Сортировка по новым буквенно-цифровым значениям в СЛУЧАЕ, КОГДА это цель.В настоящее время состояние ORDER BY сортируется по числовому значению, которое не является оптимальным.