0

同様のデータを持つ 2 つのテーブルがあり、1 つのテーブルの値を日付が等しい他のテーブルと比較する必要があります。

テーブルの例:

CREATE TABLE [data].[ProfileReconciliation] (
[ProfileName] varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[OriginalFeedDate] datetime NOT NULL ,
[AggregationDate] datetime NOT NULL ,
[TotalDescription] varchar(200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[TotalSalesAmount] decimal(18,2) NOT NULL ,
[LoadKey] int NULL 
)
ON [DATA]
GO

CREATE TABLE [data].[Aggregation] (
[ColumnName] varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[dataDate] date,
[profileDate] datetime  ,
[aggregationType] varchar(200) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[dataValue] decimal(18,2) NOT NULL ,

)
ON [DATA]
GO

したがって、dataValue表のAggregationを表の と比較する必要がTotalSalesAmountありProfileReconciliationます。dataDate表中の は表中のAggregationと一致しAggregationDateますProfileReconciliation。ProfileReconciliation テーブルには毎日のフィードからのデータのみが含まれているため、ProfileReconciliation にある日付を Aggregation テーブルと比較するだけで済みます。各テーブルの値が等しい天気を示す必要があり、そうでない場合はそのことを示すフラグを表示する必要があります。まず、dataDate が AggregationDate にある Aggregation テーブルからデータを選択しました。明らかに、AggregationDate をキャストする必要があります。次にどこに向かうべきか、これに対する最善のアプローチが何であるかはわかりません。

サンプルデータ: ProfileReconciliation テーブルから

OPDCost 2012-10-08 17:43:51.000 2012-10-07 00:00:00.000 SUM(Total_Net_Cost_Amt) 21323923.00 5307

OPDS    2012-10-08 17:43:51.000 2012-10-07 00:00:00.000 SUM(Total_Net_Sales_Amt)    70753228.00 5307

集計表から:

SPVData.fact.DayStoreProdCost   2012-10-07  2012-10-09 09:06:20.9167944     20970788.131400 
SPVData.fact.DayStoreProdExtra   2012-10-07     2012-10-09 09:03:19.1558724     70642458.910000 

ご覧のとおり、金額が一致していないため、結果を次のように表示します。

**ProfileName  Date                      ProfileAmount AggregationAmount   Equal**
OPDCost      2012-10-07 00:00:00.000   21323923.00   20970788.13         0
OPDS         2012-10-07 00:00:00.000   70753228.00   70642458.91         0
4

1 に答える 1

1
Select p.ProfileName, p.AggregationDate,
p.TotalSalesAmount as ProfileAmount, a.DataValue as AggregationAmount,
Case When p.SalesAmount <> a.DataValue Then 1
else 0
end as Equal
From Aggregation a 
Inner Join ProfileReconcilation p On Convert(Date,p.AggregationDate) = a.DataDate

私が正しく理解しているかどうかはわかりませんが...

Convert が必要かどうかもわかりません.あなたの例から、あなたの DateTime にはとにかくデータが含まれているように見えます.

于 2012-10-09T21:01:37.543 に答える