在这里,我似乎无法解决一个微不足道的问题。我正在使用LogParser来分析一些电话系统CSV日志文件。我试图根据一周中的某天按两个日期之间的所有来电制作一张图表。我已经实现了这个目标,但是我正在努力让图表以正确的顺序显示列,从星期一开始。我的SQL查询,我传给LOGPARSER的是如下:Log Parser ORDER BY CASE声明
SELECT to_string(to_timestamp(c1, 'yyyy/MM/dd HH:mm'), 'dddd') as Day, count(*) as Calls
INTO graph.gif
FROM C:\logs\*.txt
WHERE c5 = 'I'
AND to_timestamp(c1, 'yyyy/MM/dd HH:mm')
BETWEEN
timestamp('10/05/2012', 'dd/MM/yyyy')
AND timestamp('24/05/2012', 'dd/MM/yyyy')
GROUP BY Day
它实际上是按照正确的顺序BY语句输出没有任何顺序可言,但我认为,第一列是永远的那一天的日期范围内启动上,而我希望它永远是星期一(为了便于比较图表)。目前发生的事情是它将我的日志文件中的时间戳转换为一周中某天的字符串表示形式(出于输出目的),并且据我所知,没有内置逻辑“周一”小于“星期二“等。我的本能是在ORDER BY中使用CASE语句,但LogParser不会接受这个。
这是我的整个LOGPARSER的命令,以防万一它是相关的,
C:\Program Files (x86)\Log Parser 2.2\Logparser.exe" -i:CSV "SELECT to_string(to_timestamp(c1, 'yyyy/MM/dd HH:mm'), 'dddd') as Day, count(*) as Calls INTO graph.gif FROM C:\logs\*.txt WHERE c5 = 'I' AND to_timestamp(c1, 'yyyy/MM/dd HH:mm') BETWEEN timestamp('10/05/2012', 'dd/MM/yyyy') AND timestamp('24/05/2012', 'dd/MM/yyyy') GROUP BY Day" -chartType:Column3D -chartTitle:"Incoming Calls" -values:ON -config:MyConfig.js -o:CHART -headerRow OFF -iHeaderFile C:\logs\header\header.txt
只要所有我想是我的结果,以总是在星期一开始,无论日期范围。有任何想法吗?
编辑 - 这是带有包含在ORDER BY中的CASE语句的查询。
SELECT to_string(to_timestamp(c1, 'yyyy/MM/dd HH:mm'), 'dddd') as Day, count(*) as Calls
INTO graph.gif
FROM C:\logs\*.txt
WHERE c5 = 'I'
AND to_timestamp(c1, 'yyyy/MM/dd HH:mm')
BETWEEN
timestamp('10/05/2012', 'dd/MM/yyyy')
AND timestamp('24/05/2012', 'dd/MM/yyyy')
GROUP BY Day
ORDER BY (CASE
WHEN Day = 'Monday' THEN 1
WHEN Day = 'Tuesday' THEN 2
WHEN Day = 'Wednesday' THEN 3
WHEN Day = 'Thursday' THEN 4
WHEN Day = 'Friday' THEN 5
WHEN Day = 'Saturday' THEN 6
WHEN Day = 'Sunday' THEN 7
END)
如上所述,我使用LogParser,并尽我所能地不能让LogParser接受ORDER BY中的CASE语句。我相信它只在SELECT中受支持。另外,我不相信它支持datepart函数,并且我知道没有等价的东西。来自Log Parser的这两种方法的错误信息是:'错误:语法错误::不是有效的 –
2012-07-12 14:03:00
Sure Log Parser的ORDER BY支持CASE。 2.2肯定会。你能发布整个提供语法错误的查询吗? – 2012-07-16 13:55:11
你好。我觉得有点愚蠢的质疑那个写这个该死的东西的人,但是我仍然遇到一个错误,我肯定会使用Log Parser 2.2。我使用CASE语句编辑了我的原始发帖,该发言给了我错误。 – 2012-07-19 19:24:50