2016-04-07 7 views
0

1) openddateがPrevBizの日付と等しい場合は、データを取得する必要があります。私は/とステートメントがOpenddate = PrevBizであるとは思いますが、わかりません。それは私のために働いていなかったし、日付の形式が一致していない可能性があります。助言がありますか?他の日付フィールドが前営業日の場合、TSQLのみデータを取得します

DECLARE @TODAY  DATE = GETDATE() 
    DECLARE @PREVFIRST CHAR(8) = CONVERT(CHAR(8), DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0), 112) 
DECLARE @PREVLAST CHAR(8) = CONVERT(CHAR(8), DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), -1), 112) 
     DECLARE @PREVBIZ CHAR(12) = DATEADD(DAY, CASE DATENAME(WEEKDAY, CONVERT(CHAR(12), @TODAY,112)) 
          WHEN 'SUNDAY' THEN -2 
          WHEN 'MONDAY' THEN -3 
          ELSE -1 END, DATEDIFF(DAY, 0, CONVERT(CHAR(12), @TODAY, 112))) 

      SELECT TOP 10 
      CURRENTDATE  [email protected], 
      FIRST_OF_MONTH [email protected], 
      LASTDAY_OFMONTH [email protected], 
      PREVBIZ   [email protected], 

      DATEADD(DAY, CASE DATENAME(WEEKDAY, CONVERT(DATE, @TODAY,101)) 
      WHEN 'SUNDAY' THEN -2 
      WHEN 'MONDAY' THEN -3 
      ELSE -1 END, DATEDIFF(DAY, 0, CONVERT(DATE, @TODAY, 101))) AS PREVIOUSBIZDATE, 

      OpendDate 

      FROM [USBI_DW].[USBI].[vw_NameAddressBase] 
      where IsCurrent = 1 

は、ここに私の結果です: enter image description here

答えて

2
declare @TODAY datetime = convert(date,GETDATE()) 
declare @PREVBIZ datetime = DATEADD(DAY, CASE DATENAME(WEEKDAY,@TODAY) 
          WHEN 'SUNDAY' THEN -2 
          WHEN 'MONDAY' THEN -3 
          ELSE -1 END,@TODAY) 
declare @iToday int = convert(nvarchar(8),@TODAY, 112) 
     , @iPrevBiz int = convert(nvarchar(8),@PREVBIZ, 112) 

select top 10 
     CURRENTDATE  [email protected], 
     PREVBIZ   [email protected], 
     OpendDate 

from [USBI_DW].[USBI].[vw_NameAddressBase] 
where IsCurrent = 1 
and OprendDate = @iPrevBiz 

は、これは完璧に動作

+0

(なぜならDateWarehouseの特定の)あなたのビューがint日属性が含まれている願っています。どうもありがとうございます! – BIReportGuy

関連する問題