【发布时间】:2009-02-26 20:21:27
【问题描述】:
我正在尝试进行查询,以提取特定公司的所有门票。 在该表中将有一个名为 [Repeat] 的列
我需要查询做的是检查在该票证的最后 30 天内是否有任何其他行具有匹配的 Circuit_ID。
"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 标志。网上看到的 CASE WHEN [Rpt5] = 1 OR [Rpt30] = 1 THEN 'Yes' ELSE 'No' End As [Repeat],
我想要做的是用类似的东西替换它
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],
这不起作用..它基本上计算所有行,而不仅仅是与当前行电路 id 匹配且属于上个月的行。
我不知道如何正确编码以使其正常工作。或者即使在查询中也是可能的。
【问题讨论】:
标签: asp.net sql sql-server