2013-02-07 30 views
0

再次,我对提前缺乏知识表示歉意。如果我需要添加任何内容以帮助您回答我的问题,请提问。这里去....将数值组合为一个并添加相关的COUNTS号

我有这样一组数据:

PERMIT        # OF PERMITS 
Individual NPDES w/ construction 0 
Individual NPDES w/o construction 0 
Renewals (COWS)      2 
Approvals w/ Construction   21 
Renewals (CHICKENS)     25 
Approvals w/ Construction   1 
Approvals w/o construction   1 
Renewals (CHICKENS)     1 

我需要做的是结合了类似术语许可证列,并从许可证的#添加相关的计数。这可以做到吗?先谢谢你。

系统:Oracle 10g的

+0

你需要使用哪些表格?你有尝试过什么吗? –

+0

我已经尝试了@Deif建议如何根据该列添加虚拟列和分组,但它不起作用(除非我尝试错误)。我结束了彼此相邻的行,但没有分组。 有4个表格可以使用,但是所有重要的值(与这个问题相关,来自1个表格,主要是'单个字段的解码',DSKMTB_ACTIVITY_TYPE.ACTIVITY_TASK_LIST。主要问题是# Permits列的值为COUNT(DSKMTB_ACTIVITY_TYPE.ACTIVITY_TASK_LIST)'在最终产品中,我将需要该列中的值添加... – user1983682

+0

...“Project Type”中的值相同。全部? – user1983682

回答

0

这将是困难的组行的主观基础上,我劝你不要走这条路线。相反,您应该创建第三个名为“PERMIT GROUP”的列,以便您可以将每个许可证组合在一起。一旦完成,你想要的查询变得简单。

+0

如何将每个许可分组在一起,而不是基于该列进行分组?我创建了虚拟列,但基于该列的分组仅将相同的许可行放置在彼此相邻的位置上谢谢 – user1983682

+0

此外,is这个分组将去往'SUM'前面的'COUNT'行中的PERMITS列# – user1983682

+0

这取决于你有什么疑问e以及你已经加入了哪些群组。我已经制作了这个[sqlfiddle](http://sqlfiddle.com/#!3/1c86d/1)供你查看,希望它能帮助你。 – Deif

0

我认为这可以通过分析功能来完成。您需要通过许可和计算来分割数据。总计与分区。以下是基于Oracle scott.emp表的一般示例,您只能在该deptno中看到count(*)。部门= 10 3个employess,20具有5等...:

SELECT * FROM 
(SELECT deptno, ename, job, sal, 
    COUNT(*) OVER (PARTITION BY deptno) cnt 
    FROM scott.emp) 
    -- WHERE deptno = 10 -- optional 
/

DEPTNO ENAME JOB   SAL  CNT 
------------------------------------------------------- 
10  CLARK MANAGER  2450 3 
10  KING PRESIDENT 5000 3 
.... 
20  JONES MANAGER  2975 5 
20  FORD ANALYST  3000 5 
.... 
30  WARD SALESMAN 1250 6 
30  TURNER SALESMAN 1500 6 
0
SELECT permitgroup, SUM(nrOfpermits) 
FROM (SELECT substr(permit,1,instr(permit,' ')-1) permitgroup, nrOfpermits 
     FROM permits) 
GROUP BY permitgroup 

假设“像”是指开始用同样的话,但你可以很容易地通过修改内改变你的相似准则SELECT语句。

Test Code

0

让我假设你有一个具有所有的许可值列表的permits表。

select p.permit, count(a.ACTIVITY_TASK_LIST) as NumPermits 
from Permits p left outer join 
    DSKMTB_ACTIVITY_TYPE.ACTIVITY_TASK_LIST a 
    on p.permit = a.permit -- assuming join is on the actual name 
group by p.permit 
order by 1 

我认为挑战在于获得0数。你可以用你想要的所有值的列表(我称之为“驱动程序”)来完成,然后加入其余的数据。

+0

这几乎是我最终做的。事实证明,我是不正确的分组。非常感谢你的帮助! – user1983682

相关问题