1

請求書データを格納するデータベースにテーブルがあります。特定のアクションがいつ発生するかについて、毎日の統計を簡単に表示したいと考えています。アクションが実行されると、そのテーブルの「notes」という列に「ORDER FILLED -G J- Apr 20 2013」という形式でメモが追加されます。「G J」は、私が追跡しようとしているアクションを実行した人のイニシャルです。その音符の前後に別の音符がある場合があります。残念ながら、このアクションは DB のこの 1 か所にしか記録されず、データがどのように記録されるかを制御することはできません。各ユーザーが昨日このアクションを実行した回数の日次レポートを作成したいと考えています。以下のクエリは完全に機能しますが、各ユーザーの結果を個別の結果として返すため、それらがすべて 1 つのグリッドにあると思います。私はプログラマーでも SQL の専門家でもありませんが、私はうまくいく何かを一緒に引っかこうとしているだけです。2 つの列を持つ 1 つのテーブルを作成できるように、以下のクエリを簡単に変更する方法はありますか?彼らは何回もアクションを実行し、最後に合計の行を実行しました。

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+'%'
4

1 に答える 1

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 ごとに部分文字列の構文が異なり、独自のものを指定していないことに注意してください。

于 2013-04-20T16:21:49.417 に答える