使用行中的值来获取同一行的另一列的数据

时间:2012-01-02 15:41:15

标签: sql oracle oracle10g oracle11g oracle9i

  

可能重复:
  Geting value count from an Oracle Table

我对2个表A和B进行了简单的查询

Table A
========
LOCATION, NAME

Table B
========
LOCATION, SKU

查询是:

select A.LOCATION, B.SKU 
  from A, B 
 where A.Location = B.Location

在此查询的结果中,我想添加另一列,其中B中所有位置的计数与上述查询返回的SKU相同。

2 个答案:

答案 0 :(得分:2)

您应该查看Oracle analytical functions。这允许您添加聚合列(例如计数)而不对数据进行分组。

所以,也许是这样的:

 select A.LOCATION, B.SKU, count(b.location) over (partition by sku) as locskucount
  from A, B
 where A.Location=B.Location
 order by a.location

这将为您提供每个SKU的位置数。

答案 1 :(得分:2)

我在这里假设您需要A.Location,B.SKU,然后是B.SKU存在的B.Location值的计数。如果这是真的那么它应该只是一个左外连接:

Select A.Location, B.SKU, Count(B.Location)
  from 
B Left outer join A on (B.Location = A.Location)
Where B.SKU in ( /* value */ )
group by A.Location, B.SKU

这里唯一需要注意的是,对于SKU返回的每个A.Location,您将看到一条包含该位置的行,SKU和重复计数:

Location1, ABC, 100
Location2, ABC, 100

Location3,ABC,100