2012-10-09 3 views
0

비슷한 데이터를 가진 두 개의 테이블이 있고 한 테이블의 값과 날짜가 다른 테이블의 값을 비교해야합니다.두 테이블 중 하나의 날짜를 기준으로 두 테이블의 값을 비교합니까?

예 테이블 :

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 

는 그래서, Aggregation 테이블의 dataValue 요구는 ProfileReconciliation 테이블의 TotalSalesAmount 비교합니다. Aggregation 테이블의 dataDateProfileReconciliation 테이블의 AggregationDate과 일치합니다. ProfileReconciliation 테이블에는 일일 피드의 데이터 만 포함되므로 ProfileReconciliation에있는 날짜와 집계 테이블을 비교하면됩니다. 나는 각 테이블의 값이 같은지 날씨를 나타내야하고 그렇지 않다면 나는 그렇게 표시하는 플래그를 보여줄 필요가있다. dataDate가 AggregationDate에있는 집계 테이블에서 데이터를 선택하여 시작했습니다. 분명히 AggregationDate를 캐스팅해야합니다. 나는 다음에 머리를 쓸지, 아니면 최선의 접근 방식이 무엇인지에 대한 단서가 없습니다.

예 데이터 : 그래서 당신은 금액 그래서 우리는 TEH 결과는 다음과 같이 할 wwould 일치하지 않는 볼 수

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 

: 집계 테이블에서 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 

에서 :

**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 
+2

샘플 데이터와 원하는 결과를 보여주십시오. 단어 문제는 사람들에게 학교를 상기시킵니다. –

답변

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 

정확히 이해했다면 확실하지 않습니다 ...

변환이 필요한지, 예를 들어 DateTime에 데이터가있는 것 같습니다. 어쨌든 데이터가 있습니다.

관련 문제