2013-07-09 2 views
0

나는이 같은 쿼리가 :SQL 계산 델타

;WITH A AS (SELECT * FROM T1 where [email protected]), 
     B AS (SELECT A.*, T2.SId, T2.Type, T2.Value 
      FROM A 
      INNER JOIN T2 ON A.SId = T2.SId) 
SELECT A.*, B.Type, B.Value 
FROM B 

입니다 대신 사이에 Value의 델타를 얻는 방법을 @inputdate,Value을 얻기의 내 질문 @inputdate 및 전일 (DATEADD(day, -1, @inputdate))?

편집는 :

죄송 명확 없다는를 들어, '가치'int 타입이다. 예를 들어, @inputdate = '20130708' 경우, '20130708'에 대한 Value 30이며,이 반환해야하므로 '20130707'전날의 '가치', 20 -이 같은 10

+0

** 스키마 **를 추가하십시오. 20과 30의 란은 무엇입니까? 'CTE A'는 테이블 'T1'을 사용하고, 'CTE B'는 테이블 'T2'를 사용합니다. –

답변

0

뭔가있다 (30 20), 값이 DATE 형식이라고 가정합니다.

;WITH A AS (SELECT * FROM T1 where [email protected]), 
     B AS (SELECT A.*, T2.SId, T2.Type, T2.Value 
      FROM A 
      INNER JOIN T2 on A.SId = T2.SId) 
SELECT A.*, T2.Type, T2.Value, DATEDIFF(DAY, b.Value, DATEDADD(DAY, -1,@InputDate)) AS Delta 
FROM B 
+0

편집 됨,'DATEADD (일, -1 @InpuDate) '을 (를) 잊었습니다. –

+0

'Value '유형이 int 유형입니다. 그에 따라 질문을 편집했습니다. – wd113