2013-04-20 51 views
1

數據我有一個表中存儲發票數據的數據庫。我期望能夠輕鬆查看每日統計信息,瞭解某個操作發生的時間。當執行操作時,將按照以下格式將註釋添加到該表格中的「註釋」列:「ORDER FILLED -G J-Apr 20 2013」​​。 「GJ」是執行我正在追蹤的動作的人員的姓名縮寫。在該筆記之前和之後可以有其他筆記。不幸的是,此操作僅記錄在數據庫中的這一位置,我無法控制數據的記錄方式。我期待每天創建一份每日用戶昨天執行此操作的次數報告。下面的查詢完美的工作,但它返回每個用戶的結果作爲一個單獨的結果,我會騙他們都在一個網格。我不是一個程序員或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- '[email protected]+'%' 

select count(invoice_id) as Employee2 from invoice 
where notes like '%ORDER FILLED -S L- '[email protected]+'%' 

select count(invoice_id) as Employee3 from invoice 
where notes like '%ORDER FILLED -E S- '[email protected]+'%' 

select count(invoice_id) as Employee4 from invoice 
where notes like '%ORDER FILLED -R A- '[email protected]+'%' 

select count(invoice_id) as Total from invoice 
where notes like '%ORDER FILLED -% %- '[email protected]+'%' 
+0

如果可能的話,你應該重新設計表格,使得它在[1NF](http://en.wikipedia.org/wiki/First_normal_form):填充日期和填寫人要在自己的欄目。 – svick 2013-04-20 16:27:48

+0

感謝您的回答,但我無法重新設計表格或以任何方式進行修改。我試圖在第三方數據庫上創建一個我無法控制的報告。 (允許我雖然讀它,就不能修改它的工作方式) – Ryan 2013-04-20 16:35:19

回答

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有子不同的語法,而你沒有指定你的。

+0

感謝您的快速回答,看起來幾乎是工作,但我看到的問題是,有時有此字符串的前其他注意事項該列中的文字,這就是爲什麼我在記事本前使用%。因此從頭開始計算13個字符不起作用,有沒有一種方法可以從「%ORDER FILLED」的起始位置開始計算13個字符? MS SQL 2012是數據庫的順便 – Ryan 2013-04-20 16:30:31

+0

想出來....剛剛添加(PATINDEX('%ORDER FILLED%',筆記))+ 13,這就是訣竅!謝謝您的幫助 – Ryan 2013-04-20 17:18:53