2017-09-22 1 views
0

[@myTable] .MessageId 값이없는 경우 아래 쿼리에서 모든 레코드를 선택하고 싶습니다. 조인에서 0으로 간주합니다.SQL에 존재하는 경우 열 값

DECLARE @myTable TABLE 
     (
      MessageId BIGINT , 
      RecieverId VARCHAR(100) 
     ) 



    INSERT INTO @myTable 
      (MessageId , 
       RecieverId 

      ) 
      SELECT MAX(MessageID) , 
        ReceiverID 
      FROM dbo.CM_MessageStatus 
      WHERE ReceiverID IN (SELECT * 
            FROM string_split(@UserID, ',')) 
        AND DeliveredDate IS NOT NULL 
      GROUP BY ReceiverID 

SELECT COUNT(CM_MessageStatus.MessageID) AS MessageID , 
     dbo.CM_MessageStatus.ReceiverID 
FROM dbo.CM_MessageStatus 
     LEFT JOIN @myTable ON [@myTable].RecieverId = CM_MessageStatus.ReceiverID 
           AND CM_MessageStatus.MessageID > [@myTable].MessageId 
WHERE --DeliveredDate IS NULL AND 

[@myTable] .MessageId 0

CM_MessageStatus.MessageID > [@myTable].MessageId 
    AND ReceiverID IN (SELECT * 
         FROM string_split(@UserID, ',')) 
GROUP BY dbo.CM_MessageStatus.ReceiverID 

주를 고려 존재하지 않습니다 굳이 이렇게 : [@myTable] .MessageId으로 0

을 고려 존재하지 않는 경우 내가 확인하려면

enter image description here

+0

안녕하세요 빌랄, 당신은'메스을 의미합니까, 당신의 질문을 읽고,하지만 난 문제가 정확히 무엇인지 이해하지 못하는 sageId = NULL' 다음 _NULL_을 0으로 대체 하시겠습니까? – Sami

+0

[@myTable] .MessageId가없는 경우 고려하십시오. 0, 그림을 참조하십시오. – bilal

+0

테이블에 데이터가 없으면 결과가 _0 행 _과 같아야합니다. – Sami

답변

0
 INSERT INTO @myTable 
     (MessageId , 
      RecieverId 

     ) 
     SELECT MAX(MessageID) , 
       ReceiverID 
     FROM dbo.CM_MessageStatus 
     WHERE ReceiverID IN (SELECT * 
           FROM string_split(@UserID, ',')) 
       AND DeliveredDate IS NOT NULL 
     GROUP BY ReceiverID 

    IF @@ROWCOUNT= 0 
     insert into @myTable values(0,0) 
     select * from @mytable 
    ELSE 
     select * from @myTable 
+0

null이있는 경우 isnull이 작동합니다. – bilal

+0

나는 당신이 말하는 것을 가지고 있습니다. 이 경우 아래의 행 개수에 대한 검사가 포함 된 위 쿼리를 편집했습니다. Rowcount = 0이면 테이블 변수에 0을 삽입하고 그렇지 않으면 테이블 행을 반환합니다. 희망이 도움이! –