我被要求提供一份计算土地类型的报告。问题是如果有问题的地块有多种类型的土地,那么计数就是去那个拥有最大市场并忽略重置的土地部分。这些表格有助于显示我正在使用的内容,然后显示所需的输出。
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
我在想一个或两个子选择是必要的!如果需要更多信息,请询问,我将尽我所能。
任何想法都表示赞赏。
感谢。
答案 0 :(得分: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