Я пытаюсь сделать запрос, который извлекает все Билеты для определенной компании.
В этой таблице будет столбец с именем [Repeat]
Мне нужен запрос, чтобы проверить, есть ли другие строки с соответствующим Circuit_ID в течение последних 30 дней этого билета.
"SELECT [MAIN_TICKET_ID], [CompID], [ActMTTR], [ActOTR], [DtCr], [DtRFC],
CASE WHEN [PRIORITY] = 1 THEN '1'
WHEN [PRIORITY] = 2 THEN '2'
WHEN [PRIORITY] = 3 THEN '3' END AS [PRIORITY],
CASE WHEN ([PRIORITY] = '1' AND [ActMTTR] >= '4' AND ([ResCd7] = 'Equipment (XX)' OR [ResCd7] = 'Lec Facilities (LEC)'))
OR ([PRIORITY] = '1' AND [ActOTR] >= '14' AND ([ResCd7] = 'Equipment (XX)' OR [ResCd7] = 'Lec Facilities (LEC)'))
OR ([PRIORITY] = '2' AND [ActMTTR] >= '6' AND ([ResCd7] = 'Equipment (XX)' OR [ResCd7] = 'Lec Facilities (LEC)'))
OR ([PRIORITY] = '2' AND [ActOTR] >= '16' AND ([ResCd7] = 'Equipment (XX)' OR [ResCd7] = 'Lec Facilities (LEC)'))
OR (([Rpt5] = '1' OR [Rpt30] = '1' OR [Chronic] = '1') AND ([ResCd7] = 'Equipment (XX)' OR [ResCd7] = 'Lec Facilities (LEC)')) THEN 'Yes' ELSE 'No' END AS [Measured],
CASE WHEN [Reviewed] = 1 THEN 'Yes' ELSE 'No' END AS [Reviewed],
CASE WHEN [Rpt5] = 1 OR [Rpt30] = 1 THEN 'Yes' ELSE 'No' End As [Repeat],
CASE WHEN [Chronic] = 1 THEN 'Yes' ELSE 'No' END AS [Chronic],
CASE WHEN [ResCd7] = 'Equipment (XX)' THEN 'XX'
WHEN [ResCd7] = 'Isolated to Customer (ITC)' THEN 'ITC'
WHEN [ResCd7] = 'Information (INF)' THEN 'INF'
WHEN [ResCd7] = 'Test OK (TOK)' THEN 'TOK'
WHEN [ResCd7] = 'Lec Facilities (LEC)' THEN 'LEC'
WHEN [ResCD7] = 'Dispatched No Trouble Found (NTF)' THEN 'NTF'
WHEN [ResCD7] = 'Cleared While Testing (CWT)' THEN 'CWT' END AS [Resolution]
FROM [SNA_Ticket_Detail] WHERE ([CompID] = @CompID)"
Выше текущий запрос, который опирается на флаг 0 или 1 в таблице. Видно на линии
Случай, когда [Rpt5] = 1 ИЛИ [Rpt30] = 1, затем «Да», иначе «Нет», завершается как [повтор],
Что я хочу сделать, это заменить это чем-то вроде
CASE WHEN (SELECT COUNT([XX_CIRCUIT_ID]) FROM SNA_Ticket_Detail WHERE (CONVERT(CHAR(10), [DtRFC], 101) BETWEEN ([DtRFC] - 6) AND ([DtRFC])) AND (XX_CIRCUIT_ID = XX_CIRCUIT_ID)) > '1' THEN 'Yes' ELSE 'No' End As [Repeat],
Это не работает .. По сути, он считает все строки, а не только те строки, которые соответствуют текущему идентификатору цепочки строк и попадают в последний месяц.
Я не знаю, как правильно это кодировать, чтобы заставить его работать. или даже если это возможно в запросе.