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

サブセレクトが1つか2つ必要になると思います!さらに情報が必要な場合は、お問い合わせください。できる限りの情報を提供します。

どんなアイデアでも大歓迎です。

ありがとう。

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 に答える