2010-07-10 3 views
0
Snip.. 
    WHERE  (dbo.ProductIngredients.Ing_EffectiveTo = 
           (SELECT  TOP (1) Ing_EffectiveTo 
           FROM   dbo.ProductIngredients AS ProductIngredients_1 
           WHERE  (Ing_Id = dbo.ProductIngredients.Ing_Id) 
           ORDER BY (CASE WHEN Ing_EffectiveTo IS NULL THEN '01/01/2050' ELSE Ing_EffectiveTo END) DESC)) 

잘 작동합니다 where where 절이 null이 아니지만 ansi_null 설정을 사용하지 않으면 null이 분명히 실패합니다. 그래서 SQL Server의 다음 버전에서 더 나은 방법을 찾고). 결과를 기반으로 IS =에서 IS로 변경해야하는 것처럼이 쿼리를 작동 시키려면 어떻게해야합니까?SQL 서버 사이에 전환하는 SQL 서버 사이의 전환

답변

4

ISNULL(Ing_EffectiveTo,'01/01/2050'을 사용할 수 없습니까?

+0

Nope 날씨 반환 값이 NULL이거나 아니기 때문에 그 값이 null 인 경우 null이 아님. –

+0

@mattcodes, null 인 경우 '01/01/2050 '을 올바르게 사용하고 싶습니다. ? –

+0

처음에는 2015 년 1 월 1 일을 대체하여 null 값이 이전 데이터가 아닌 미래 데이터를 고려하도록합니다. 하지만 합병과 모든 우물에서 같은 기술을 사용했습니다. –

0

01/01/2050을 사용하여 두 부분 모두에서 COALESCE를 감싸는 것으로 해결되었습니다. 이것은 내가 = NULL을 사용할 수있게 해줍니다 - 만약 값이 널인지 알지 못하는 곳에 넣습니다 (null이 아니라면 값을 신경 써요) - 레거시 DB.

+0

다른 답변에서 언급 된 isnull은 정확히 무엇입니까? 당신은 필요합니다 .. 그러나 당신은'order by' 섹션에서만 사용해야합니다. –

+0

아니요, 가장 효과적인 날짜 (null 임)를 선택하거나 재료 세트에 대해 가장 최근의 날짜를 지정하지 않는 것이 재미 있습니다. 그것의 부 울린 경우가 null이 아니거나 아닙니다. –

+0

나는 아직도 isnull이 당신을 위해 이것을 할 수 없다는 것을 이해하지 못한다. 당신이 우리에게 어떤 데이터의 예를 줄 수 있는가? –