2017-09-14 13 views
0

숫자가 'NULL'일 때 날짜 열에 yesterdays 날짜를 표시하려고합니다.사례문을 사용하여 값 삽입 SQL Server

   Date     Person  Team Figure 
    ------------------------------------------------------- 
    2017-09-01 00:00:00.000  Joe   1  NULL 
    2017-09-01 00:00:00.000  Tim   1  NULL 
    2017-09-01 00:00:00.000  Sam   1  NULL 
    2017-09-04 00:00:00.000  Ben   1  NULL 
    2017-09-04 00:00:00.000  Matt  1  NULL 
    2017-09-05 00:00:00.000  Alex  1  NULL 

는 결과 : 내가

DECLARE @Yesterday DATETIME 
    SET @Yesterday = DateAdd(DD, DateDiff(DD, 0, GETDATE())-1, 0) 

    CASE WHEN D.[Figure] IS NULL THEN 
    @Yesterday 
    ELSE D.[DATE] END 

을 시도하지만이 결과

Date      Person Team  Figure Month (No column name) 
    2017-09-01 00:00:00.000  Joe  1   NULL 1125 2017-09-13 00:00:00.000 
    2017-09-01 00:00:00.000  Alex  1   NULL 177  2017-09-13 00:00:00.000 

을 얻을

   Date     Person  Team Figure 
    2017-09-13 00:00:00.000  Joe   1  NULL 
    2017-09-13 00:00:00.000  Tim   1  NULL 

어떻게이 경우 날짜 열이 변경합니까 성명서? 그래서 그 대신 directely 날짜를 선택

+0

첫 번째 문장은 열에 대한 작업을 설명합니다. 당신의 예제는 필터링 된 행을 보여줍니다. 나는 혼란 스럽다. –

+0

예, 나는 모든 것을 포함하지 않았습니다. 난 그냥 시위했다 - 필터링 된 데이터를 무시합니다. –

답변

1

코드가 약간 복잡 할 수도 있습니다. 간단히 말해서 :

select case when DF.[Figure] is null 
     then DateAdd(day,-1,getdate()) 
     else DF.[Date] 
     end as [Date],... 
+0

기본적으로 내가 이미 무엇을 가지고 있지 않습니까? –

+0

단어 선택 후 곧바로 넣고 날짜 열을 다시 선택하면됩니다. 그래서 전체 코드는 다음과 같습니다.. DF가 [데일리 그림이] 다음 DateAdd 함수 (일, -1, GETDATE()) 다른 DF [주문 날짜] [날짜]로 말, 사람이 null의 경우 가'케이스를 선택 , 팀, 그림에서 ...' – Boydus

0

, 당신은 다음 CASE 표현을 사용할 수 있습니다

SELECT CASE WHEN D.[Figure] IS NULL THEN DATEADD(DAY, -1, GETDATE()) 
      ELSE D.[DATE] 
     END AS [Date], 
     Person, 
     Team, 
     Figure, 
     Month 
FROM Tbl AS D 
0

내가 무엇을 찾고 있어요 것은 그림 'NULL'내가이 어제 날짜를 표시 할이 때이다 날짜 필드에. 이 경우

당신이 원하는, 당신은 할 것입니다 : 당신의 예제 데이터를 기반으로

select . . ., 
     coalesce(figure, cast(getdate() - 1 as date)) as figure 

, 나는 이것이 당신이 정말로 원하는 것입니다 모르겠지만, 이것은 당신이 요구하는 것입니다 에 대한.