【发布时间】:2014-09-01 18:05:19
【问题描述】:
我有一个查询,我需要通过 customer_name、tier_name、vm_name 来汇总每个 vm 因此每个 vm_将输出一个它使用的存储层的汇总列表以及它们的用法
so if vm1 is using tier1 and tier2 belonging to Customer1 entries are like so,
tier1.entry=100
tier1.entry2=100
tier2.entry1 = 50
tier2.entery1 = 40
这样每个返回的总和都会像这样输出:
CUSTOMER1 VM1 Tier1 总计 = 200 CUSTOMER1 VM1 Tier2 总计 = 90
,但它给了我这个错误:
SQL> select customer_name,
2 tier_name,
3 substr(decode(vcd_managed,'Y',vm_name,'N',vm_group_name || '/' || vm_display_name),1,100) vm_name,
sum(provisioned_gb) Provisioned_GB,
sum(consumed_gb) Consumed_GB
from customers a,
vm_groups b,
vms c,
vm_storage_histories d,
datastores e,
storage_tiers f
4 5 6 7 8 9 10 11 12 where a.customer_id = b.customer_id
13 and b.vm_group_id = c.vm_group_id
14 and c.vm_id = d.vm_id
15 and d.datastore_id = e.datastore_id
16 and e.storage_tier_id = f.storage_tier_id
17 and trunc(d.datetime) = to_date('01-Aug-2014', 'DD-MON-YYYY')
18 and a.customer_id != 24 -- enki
19 and a.customer_id != 1 -- unassigned
20 group by customer_name,tier_name, vm_name
21 order by 1,2,3
22
SQL> /
substr(decode(vcd_managed,'Y',vm_name,'N',vm_group_name || '/' || vm_display_name),1,100) vm_name,
*
ERROR at line 3:
ORA-00979: not a GROUP BY expression
这是我的查询:
select customer_name,
tier_name,
substr(decode(vcd_managed,'Y',vm_name,'N',vm_group_name || '/' || vm_display_name),1,100) vm_name,
sum(provisioned_gb) Provisioned_GB,
sum(consumed_gb) Consumed_GB
from customers a,
vm_groups b,
vms c,
vm_storage_histories d,
datastores e,
storage_tiers f
where a.customer_id = b.customer_id
and b.vm_group_id = c.vm_group_id
and c.vm_id = d.vm_id
and d.datastore_id = e.datastore_id
and e.storage_tier_id = f.storage_tier_id
and trunc(d.datetime) = to_date('01-Aug-2014', 'DD-MON-YYYY')
and a.customer_id != 24 -- enki
and a.customer_id != 1 -- unassigned
group by customer_name,tier_name, vm_name
order by 1,2,3
/
【问题讨论】:
标签: sql oracle database-administration