2013-07-01 5 views
2

작동하는 SQL 쿼리를 만들었지 만보기 흉합니다. 나는 문을 사용하고 있습니다 : 어떤 계산에SQL 코드 정리

CASE WHEN p.Guests is null THEN 0 ELSE p.Guests 

약 10 시간이 쿼리에서 수행중인과 같은 것을 할 수있는 경우 궁금 : 다음 대신 123 * (CASE WHEN p.Guests is null THEN 0 ELSE p.Guests)

variable = CASE WHEN p.Guests is null THEN 0 ELSE p.Guests 

및 나는 123 * variable을 할 수 있었다. p.Guests는 이벤트 참석자 수이며 쿼리의 각 행에 따라 다릅니다. 내 질문은 : SQL에서 이와 같은 변수를 만드는 방법이 있습니까?

+0

하위 쿼리를 사용하지 않는 이유는 무엇입니까? 'SELECT 123 * variable, 456 * 변수 FROM (SELECT variable = COALESCE (p.Guests, 0) FROM ...) AS x;' –

+0

... 표현식을 단순화 할 수 있지만, 복잡성에 상관없이 시간? –

+0

쿼리의 여러 지점에서 표현식을 사용하고 있습니다. 나는 SQL에 익숙하지 않기 때문에 그렇게하는 것이 정말 길다.하지만 내가 원하는 것도한다. – Austin

답변

3

당신은 ISNULL을 사용할 수있다 장황한 경우 문에 대한 필요가 없습니다 :

select 123 * ISNULL(p.Guests,0) FROM ... 

ISNULL 함수가없는 한, 첫 번째 매개 변수를 반환합니다 null이면 두 번째 매개 변수를 반환합니다.