2015-10-16 39 views
0

如果我有这样的数据:小计由列值分区

K1 K2 V3 
100 A C 
100 A C 
100 A D 
200 B D 
200 B D 
200 B C 

我被K1 & K2分割我的数据,这样我就可以用计数得到总计:

count(V3) over (partition by K1, K2) 

这将产生:

K1 K2 V3 Total 
100 A C 3 
100 A C 3 
100 A D 3 
200 B D 2 
200 B E 2 

我怎样才能获得分区引用该行中值的小计?因此,结果将是:

K1 K2 V3 Total Subtotal 
100 A C 3  2 
100 A C 3  2 
100 A D 3  1 
200 B D 2  1 
200 B E 2  1 
+0

哇。当我花费太多时间注视同一个问题时,会发生这种情况。 – Paul

+0

......你的数据似乎有一些错误(“E”来自哪里,总数不匹配,你获得/失去了一行) –

回答

2
SELECT 
     K1, 
     K2, 
     V3, 
     count(V3) over (partition by K1, K2) as Total, 
     count(V3) over (partition by K1, K2, V3) as Subtotal 
FROM DataTable