0

問題が発生しています。このクエリを修正する方法がわかりません。一時テーブルがあります。列の 1 つには、別の列の計算値をその列のグループの合計で割った値が含まれている必要があります。エラーを回避するためにこれを書く方法がわかりません。

Declare @Temp Table
(           
    ZipCode char(5) Not Null,
    StateFacilityId varchar (50) Not Null,
    Cnt int Not Null,
    MarketShare float,
    Row int Not Null,
    Primary Key Clustered (ZipCode, StateFacilityId)
);


Insert Into @Temp (ZipCode, StateFacilityId, Cnt, Row)
Select d.ZipCode, d.StateFacilityId, Cnt = COUNT(*), Row = ROW_NUMBER()OVER(PARTITION BY ZipCode ORDER BY Count(*) DESC)
From [MarketShareIQData].[dbo].[tblServicesDetail] d    
Group By d.ZipCode, d.StateFacilityId
;


Update @Temp
Set MarketShare =(h.Cnt/(
                Select SUM(h.Cnt)
                From @Temp h
                Group By ZipCode
                ))
From @Temp h
4

1 に答える 1

1

Agroup byは、グループごとに 1 行を返します。郵便番号が一致する単一のグループを探していると思います。あなたはそれを次のようにすることができます:

update h
set     MarketShare = h.Cnt /
        (
        select  sum(h2.Cnt)
        from    @Temp h2
        where   h2.ZipCode = h.ZipCode
        )
from    @Temp h
于 2012-06-18T17:04:01.607 に答える