2013-05-20 4 views
0

int 값이있는 6 개의 열이있는 테이블이 있습니다. AreaID는 Forigen 키입니다.값을 기준으로 값 선택

B1 H1 F1 A1 U1 AreaID 
    0 3 -1 40 -1 120 
    34 7 -1 3 -1 120 

내가 할 수 있어야 무엇입니까 위의 열 을 별개의 목록을 반환하는 SELECT 문을 얻을 WHERE AreaID = 120 하지만 -1

값으로 어떤 COLS 할인 따라서 위의 예는 이상적으로 열을 반환합니다. B1, H1, A1,

아무도 도와 줄 수 없습니까?

많은 감사

제이슨

+1

나는 모든 열을 반환하고 코드에서 '-1'을 가진 열을 버리는 것이 더 좋을 것이라고 말하고 싶습니다. –

답변

0
SELECT DISTINCT 
    NULLIF(B1, -1) AS B1, 
    NULLIF(H1, -1) AS H1, 
    NULLIF(F1, -1) AS F1, 
    NULLIF(A1, -1) AS A1, 
    NULLIF(U1, -1) AS U1 
FROM 
    MyTable 
WHERE 
    AreaID = 120 

은 버리려면 -1 값, 당신은 다른 뭔가를 변경해야 할 것입니다. SQL의 열은 무시할 수 없으며 마스크 만 마스크 할 수 있습니다. 내 SQL에서 -1 값은 DISTINCT에 대해 무시됩니다.

H1 행 중 하나에 -1이 있다고 가정하면 -1이 아닌 행에도 포함해야합니다. 이렇게하려면 클라이언트에서해야합니다. "행에 -1이있는 열을 무시하십시오."는 의미가 아니라면, 이것은 전혀 SQL이 아닙니다. 다시 말하지만, 클라이언트 쪽 처리입니다.

tl : dr : SQL은 동적 열을 허용하지 않습니다. 동적 SQL을 사용하려는 경우가 아니면

비슷한 내용은 SQL exclude a column using SELECT * [except columnA] FROM tableA?을 참조하십시오.

+1

감사합니다. 당신의 솔루션이 저에게 효과적이었습니다. 나는 그것을 조금 비틀었다. 그러나 그것은 효과가 있었다. 클라이언트 측에서 NULLS를 할인합니다. 많은 감사 – Jason

관련 문제