2017-09-22 5 views
0

[@myTable] .MessageId の値が存在しない場合、以下のクエリからすべてのレコードを選択したいと考えています。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 

注それを考慮存在しない--if:[@myTable] .MessageIdが0

を考慮して存在しない場合、私は確認したいです

enter image description here

+0

こんにちはビラル、あなたは 'Mesの意味だ、私はあなたの質問を読んで、私はあなたの問題を正確に何であるか理解していません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がある場合は、スナップショットを確認してください。 – bilal

+0

私はあなたが言っていることを得ています。この場合、上記のクエリを編集しました。ここでは、以下のようにRowcountのチェックが含まれています。 Rowcount = 0の場合は、テーブル変数に0を挿入します。それ以外の場合はテーブル行を返します。お役に立てれば! –

関連する問題