我在数据库中有一个存储发票数据的表。我希望能够轻松查看某个动作发生时的每日统计数据。当执行操作时,会以这种格式将注释添加到该表中名为“notes”的列中:“ORDER FILLED -G J- Apr 20 2013”。 “G J”是执行我想跟踪的动作的人的姓名首字母缩写。该笔记之前和之后可以有其他笔记。不幸的是,此操作仅记录在数据库中的这一位置,我无法控制数据的记录方式。我希望创建一个每日报告,说明每个用户昨天执行此操作的次数。下面的查询工作完美但是它将每个用户的结果作为单独的结果返回,并且我将它们置于一个网格中。我不是程序员或SQL专家,我只是试图抓住一些可行的东西。是否有一种简单的方法可以修改我的查询,以便我可以有一个包含两列的表...第1列应该是“用户”而第2列应该是“订单已填充”我想为每个员工排一行,如何很多时候他们执行了这个动作,最后总共进行了一次。
declare @date VARCHAR(12)
SET @date = (SELECT CONVERT(VARCHAR(12), GETDATE()-1, 100))
select count(invoice_id) as Employee1 from invoice
where notes like '%ORDER FILLED -G J- '+@date+'%'
select count(invoice_id) as Employee2 from invoice
where notes like '%ORDER FILLED -S L- '+@date+'%'
select count(invoice_id) as Employee3 from invoice
where notes like '%ORDER FILLED -E S- '+@date+'%'
select count(invoice_id) as Employee4 from invoice
where notes like '%ORDER FILLED -R A- '+@date+'%'
select count(invoice_id) as Total from invoice
where notes like '%ORDER FILLED -% %- '+@date+'%'
答案 0 :(得分:0)
这样的事情可能会起作用
select substring(notes, 13, 4) filledby -- should be -G J- if I counted right
, count(*) records
from invoice
where notes like '% ' + @date + '%'
group by substring(notes, 13, 4)
请注意,不同的RDBMS对子字符串有不同的语法,而您没有指定自己的语法。