2010-12-12 6 views
0

SQL Server 2008ではTable1を使用していますが、期待どおりの出力結果を得たいと考えています。 アクション 'カウント'が発生するたびに、関連するすべてのアイテムを追加/削除し、合計を表示します。 すべての項目が0カウントで始まると仮定します。T-SQLは、追加と削除によるアイテム数をカウントします。

alt text

感謝します。生成された結果は、あなたには、いくつかの計算ミスをしたので、あなたはおそらく示したものと異なっているが 以下のように

CREATE TABLE Table1([Time] [smalldatetime] NULL,[Action] [nvarchar](10) NULL,[Item] [nchar](50) NULL) 
insert into Table1 values('2009-08-22 20:34:02','Count','Apple') 
insert into Table1 values('2009-08-22 20:34:03','Count','Banana') 
insert into Table1 values('2009-08-22 20:34:04','Count','Mango') 
insert into Table1 values('2009-08-22 20:34:05','Count','Black Berry') 
insert into Table1 values('2009-08-22 20:34:06','Count','Orange') 
insert into Table1 values('2009-08-22 20:34:07','Add','Apple') 
insert into Table1 values('2009-08-22 20:34:08','Add','Banana') 
insert into Table1 values('2009-08-22 20:34:09','Add','Mango') 
insert into Table1 values('2009-08-22 20:34:10','Remove','Banana') 
insert into Table1 values('2009-08-22 20:34:11','Add','Banana') 
insert into Table1 values('2009-08-22 20:34:12','Add','Mango') 
insert into Table1 values('2009-08-22 20:34:13','Add','Mango') 
insert into Table1 values('2009-08-22 20:34:14','Add','Mango') 
insert into Table1 values('2009-08-22 20:34:15','Remove','Mango') 
insert into Table1 values('2009-08-22 20:34:17','Count','Apple') 
insert into Table1 values('2009-08-22 20:34:18','Add','Banana') 
insert into Table1 values('2009-08-22 20:34:19','Add','Banana') 
insert into Table1 values('2009-08-22 20:34:20','Remove','Banana') 
insert into Table1 values('2009-08-22 20:34:21','Add','Apple') 
insert into Table1 values('2009-08-22 20:34:22','Add','Mango') 
insert into Table1 values('2009-08-22 20:34:23','Add','Apple') 
insert into Table1 values('2009-08-22 20:34:24','Add','Mango') 
insert into Table1 values('2009-08-22 20:34:25','Remove','Apple') 
insert into Table1 values('2009-08-22 20:34:26','Count','Mango') 
insert into Table1 values('2009-08-22 20:34:27','Add','Apple') 
insert into Table1 values('2009-08-22 20:34:28','Add','Banana') 
insert into Table1 values('2009-08-22 20:34:29','Remove','Apple') 
insert into Table1 values('2009-08-22 20:34:30','Remove','Banana') 
insert into Table1 values('2009-08-22 20:34:31','Add','Banana') 
insert into Table1 values('2009-08-22 20:34:32','Add','Mango') 
insert into Table1 values('2009-08-22 20:34:33','Count','Banana') 
insert into Table1 values('2009-08-22 20:34:34','Add','Banana') 
insert into Table1 values('2009-08-22 20:34:35','Add','Apple') 
insert into Table1 values('2009-08-22 20:34:36','Remove','Mango') 
insert into Table1 values('2009-08-22 20:34:37','Add','Apple') 
insert into Table1 values('2009-08-22 20:34:38','Add','Mango') 
insert into Table1 values('2009-08-22 20:34:39','Count','Apple') 
insert into Table1 values('2009-08-22 20:34:40','Remove','Apple') 
insert into Table1 values('2009-08-22 20:34:41','Remove','Banana') 
insert into Table1 values('2009-08-22 20:34:42','Add','Banana') 
insert into Table1 values('2009-08-22 20:34:43','Add','Mango') 
insert into Table1 values('2009-08-22 20:34:44','Count','Banana') 
insert into Table1 values('2009-08-22 20:34:45','Remove','Banana') 
insert into Table1 values('2009-08-22 20:34:46','Remove','Apple') 
insert into Table1 values('2009-08-22 20:34:47','Remove','Mango') 
insert into Table1 values('2009-08-22 20:34:48','Add','Apple') 
insert into Table1 values('2009-08-22 20:34:49','Add','Mango') 
insert into Table1 values('2009-08-22 20:34:50','Count','Mango') 
+2

これまでに書いたコードを投稿してください。人々は一般的にあなたのためのコードを書くのが好きではありません。 –

+2

合意。それはそのままで、これは仕事の説明であり、質問ではありません。 –

+0

私はこれを解決する最良の方法を知りたがっています。私はこれをどのように解決するかについてのヒントさえも感謝します。 – user219628

答えて

0

これは左アウターセルフで達成することができるが参加します。とにかく、同様のアプローチを試してください。

select a.time,a.item, 
SUM(case 
when b.action='Add' then 1 
when b.action='Remove' then -1 
else 0 end) 
from table1 as a 
left join table1 as b 
on a.item=b.item 
and b.time<a.time 
where a.action='Count' 
group by a.time,a.item,a.action 
order by 1 
+0

迅速な対応のためにJoesphに感謝します。あなたは正しいです、計算エラーがありました。これは大きな助けです。あなたはどの項目のカウントがあるたびに記録する方法をアドバイスできますか? – user219628

関連する問題