1

我被要求提供一份统计土地类型的报告。问题是如果有问题的地块有多种类型的土地,那么计数是去具有最大市场的那部分土地而忽略重置。这些表格有助于显示我正在使用的内容以及所需的输出。

    TRMaster Table
Year  Parcel   District
2012  0-0-12   1
2012  0-0-15   1
2012  0-0-20   3

TRValue Table
Year Parcel    PropCode    Market
2012  0-0-12      LC01     10,000
2012  0-0-12      LR01     25,000
2012  0-0-15      LA01     30,000
2012  0-0-15      LS01     28,000
2012  0-0-20      LR01     13,000
2012  0-0-20      LS01     15,000
2012  0-0-20      LS02     18,000

TRProp Table
PropCode    tc233    PropType
LA01           1         A
LC02           3         A
LR01           2         A
LS01           4         A
LS02           4

Desired Output
District tc233    Count
1         1        1    (from 0-0-15 LA01)
1         2        1    (from 0-0-12 LR01)
3         4        1    (from 0-0-20 LS02)

以下查询已关闭,但由于 p.tc233 上的 MIN 子句而无法正常工作。当然,它返回 TRValue 中包裹的每个记录集的最小 p.tc233 值!

Select  m.District, MIN(p.tc233), MAX(v1.currentmarket), COUNT(*)
  from trvalue v
 inner join TRProp P on 
       p.code = v.Code and p.PropType = 'A'
 inner join TRMaster m on 
       m.Year = v.Year and m.Parcel = v.parcel and m.Deleted = 0
 where v.Year = 2012 
 group by m.district, p.tc233
having MAX(v.currentmarket) > 0
 order by m.district, p.tc233

我想一两个子选择是必要的!如果需要更多信息,请询问,我会尽我所能。

任何想法表示赞赏。

谢谢。

4

1 回答 1

1

这给出了您需要的结果,但我不确定它是否完全正确:

;With RatedMarkets as (
   select *,ROW_NUMBER() OVER (PARTITION BY Parcel ORDER BY Market desc) as rn
  from TRValue
)
select
  m.District,
  p.tc233,
  COUNT(*)
from
  TRMaster m
    inner join
  RatedMarkets rm
    on
      m.Parcel = rm.Parcel and
      rm.rn = 1
    inner join
  TRProp p
    on
      rm.PropCode = p.PropCode
group by
  m.District,p.tc233

SQLFiddle

于 2013-01-11T06:55:29.327 回答