2017-09-01 34 views
0

我们的软件生成我们内置的错误代码,这些代码保存在SQL数据库的一列中。目标是建立一个查询来运行并计算过去30天内每个错误出现的次数,并将每个结果设置为返回的客户变量。SQL - 如何计算自定义创建的错误代码


set @error#1 = (@error#1 + 1) where Errors like '%E001%' and CreatedDate > DATEADD(DAY, -30, GETDATE()) 
print("There were" + @policyfail#1 + "Error#1's in the past month.") 

所以要解释的想法上面,你应该采取的自定义变量@错误#1加1到它每次它看到错误代码(E001)从指定的时间内帧。

所有的错误都被插入在附加到消息I.E.的唯一代码之下。 “E001 - 连接到SQL数据库时出错。”因此我们试图在开始时查询代码部分(“E001”)

我们也试图能够对所有存在的错误(我们有几百个)重复这个较小的查询,在一个更大的查询中,将返回单个脚本中每个现有错误的出现次数。


我们的问题是,软件的每一个动作一个字符串,直到用户关闭的迹象下将错误保存。因此,一天中的一个用户会将多个错误作为单个字符串保存到表中的单个单元格中。


从大的查询结果应该主要由几百行显示,看起来像这样过去一个月内的每一个错误的号码:

"There were 15000 Error#1's in the past month." 

"There were 20000 Error#2's in the past month." 

"There were 10000 Error#3's in the past month." 

上述结果然后会继续,直到它解决了每一个错误。

+1

您是否将这些错误代码存储在SQL Server的表中?如果是这样,请张贴表格结构和数据样本。 –

+2

删除其中一个数据库标记,因为MySQL和SQL-Server之间存在细微的差异,只有与问题相关的应该存在。 –

+0

你的问题是什么? – Xedni

回答

0

为查询,你可以使用像这样做:

SELECT COUNT(*) AS [Count], SUBSTRING([Errors], 1, 4) AS [ErrorCode] 
FROM [MyTableName] 
WHERE SUBSTRING([Errors], 1, 4) LIKE 'E[0-9][0-9][0-9]%' 
    AND [CreatedDate] > DATEADD(DAY, -30, GETDATE()) 
GROUP BY SUBSTRING([Errors], 1, 4) 

如果你想在文本形式,通过该迭代用光标和使用print语句的每一行。

相关问题