2012-03-23 2 views
1
SELECT 3 AS LoggedIn, 83 AS MessageID, Data AS DistID, 1 AS StatusID 
    , 0 AS Important 
    , CASE WHEN (dd.SponsorID = 3) THEN 0 ELSE d.ReceiveUplineMessages END AS Test 
    , dd.SponsorID 
FROM msg_SplitVar(',', @MessageList) sv 
INNER JOIN Distributor d 
    ON d.DistID = sv.Data 
INNER JOIN DistributorDetail dd 
    ON dd.DistID = sv.Data 
WHERE Data NOT IN (SELECT DistID FROM MessageBlockList WHERE BlockedID = 3) 
    AND Test = 0 

배포자 테이블 ReceiveUplineMessages에 필드가 설정되어 있습니다. 이 값을 0 또는 1로 설정할 수 있습니다. 이 값을 0으로 설정하면 스폰서 출신 (로그인 한 사용자) 인 경우에만 메시지를 보내려고합니다.t-sql 및 case 문과 and/where 절에 문제가 발생했습니다.

사례 문장을 사용할 수 있지만 AND 절에 문제가 있습니다.

splitVar 함수는 문자열 기반 배열 '3,4,5,6,7'을 사용하고 insert 문에 대한 개별 행으로 데이터를 분할합니다.

누구나 내가 AND 절에서 잘못하고있는 것을 알고 있습니까? ReceiveUplineMessages0 인 경우에만 표시하고 싶습니다.

+0

이 오류를 수신 있습니까를? 정확히 작동하지 않는 것은 무엇입니까? – Lamak

+0

오류 :'Msg 156, Level 15, 상태 1, Line 5 키워드 'AND'근처의 구문이 올바르지 않습니다. ' –

답변

4

WHERE 절에 Test 별칭을 사용하지보십시오 :

SELECT 3 AS LoggedIn, 83 AS MessageID, Data AS DistID, 1 AS StatusID 
    , 0 AS Important 
    , CASE WHEN (dd.SponsorID = 3) THEN 0 ELSE d.ReceiveUplineMessages END AS Test 
    , dd.SponsorID 
FROM msg_SplitVar(',', @MessageList) sv 
INNER JOIN Distributor d 
    ON d.DistID = sv.Data 
INNER JOIN DistributorDetail dd 
    ON dd.DistID = sv.Data 
WHERE Data NOT IN (SELECT DistID FROM MessageBlockList WHERE BlockedID = 3) 
    AND (CASE WHEN (dd.SponsorID = 3) THEN 0 ELSE d.ReceiveUplineMessages END) = 0 

또는 다른 SELECT에 문을 WHERE에 시험 사용하는 포장 :

SELECT t.*  
FROM 
(
    SELECT 3 AS LoggedIn, 83 AS MessageID, Data AS DistID, 1 AS StatusID 
     , 0 AS Important 
     , CASE WHEN (dd.SponsorID = 3) THEN 0 ELSE d.ReceiveUplineMessages END AS Test 
     , dd.SponsorID 
    FROM msg_SplitVar(',', @MessageList) sv 
    INNER JOIN Distributor d 
     ON d.DistID = sv.Data 
    INNER JOIN DistributorDetail dd 
     ON dd.DistID = sv.Data 
    WHERE Data NOT IN (SELECT DistID FROM MessageBlockList WHERE BlockedID = 3) 
) t 
WHERE t.Test = 0 
+0

첫 번째 예제를 사용했는데 완벽하게 작동했습니다. 감사합니다. –

+0

다행입니다. – Taryn

관련 문제