1

可能であれば、次の状況であなたの助けが必要です。私はSql Server 2008 R2を使用しており、次の表があります。

create table tblContracts 
([ContractID] [int] NOT NULL,
[PlotNumber] [nvarchar](150) NOT NULL,
[TotalArea] [numeric](12, 0) NULL,
[NotaryCosts] [numeric](12, 2) NULL,
[LandTax] [numeric](12, 2) NULL,
[OtherTaxes] [numeric](12, 2) NULL)

このテーブルでは、同じContractIDであるが異なる複数のレコードを持つことができますPlotNumber。同じ場所にPlotNumber応じて、それぞれのコストを動的に分割したいと思います。TotalAreaContractID

たとえば、次のレコードがある場合:

1. ContractID=1,PlotNumber=1,TotalArea=100,NotaryCosts=300,LandTax=10,OtherTaxes=0 and
2. ContractID=1,PlotNumber=2,TotalArea=200,NotaryCosts=?,LandTax=20,OtherTaxes=0 

の式はNotaryCosts、次の式に従って動的に更新する必要があります。

NotaryCosts(各PlotNumber)= sum(NotaryCosts同じContractID)/ sum(TotalArea同じContractID)* TotalArea(特定のPlotNumber

どういうわけかこれを行うことは可能ですか?前もって感謝します!

4

1 に答える 1

1

私はトーマスにほぼ同意します。テーブルの設計には、データがシステムに入力される方法だけでなく、いくつかの作業が必要だと思います。いずれにせよ、ここにあるのは、探している計算された合計を提供するためのビューとして使用できるクエリ、またはUpdateステートメントで使用できるクエリです。これを自動的に行うには、このロジックをトリガーに配置する必要があります

select
tc.ContractID
,tc.PlotNumber
,tc.TotalArea 
,tc.TotalArea *tcTotals.Cost_Per_Area as [Notary_Cost]
,tc.LandTax
,tc.OtherTaxes 
from
tblContracts  tc
inner join
(
select 
ContractID
,SUM(notaryCosts) as [sum_NotaryCost]
,SUM(TotalArea) as [sum_TotalArea]
,SUM(notaryCosts)/SUM(TotalArea) as [Cost_Per_Area]
from 
tblContracts
group by
ContractID
) tcTotals
on
tc.ContractID =tcTotals.ContractID 
于 2012-12-20T15:01:32.150 に答える