2016-07-11 11 views
0

私はSQL Serverを使用していますが、(file1、File2、File3)から3つのファイルすべてを受け取っていないストアのリストをコンパイルすることです。つまり、各店舗でこれらのファイルを送信する必要があります。ストアがファイルを送信しない場合は、そのストアと失われた特定のファイルを識別できる必要があります。例えばSQL select文で返されない値の選択

StoreName|StoreID|NumberReceived|Missing Files 
StoreABC 1234 2    File1 
SuperStore 4321 1    File1, File2 

これは私がこれまで持っているものです。私は不足しているファイルを特定しようとすると、我々はカンマがちょうどあなたの条件に応じて、それが前提とされているコードを変更区切って取得することができますSTUFFとXML PATH()を使用してコンマ

SELECT 
ds.StoreName, 
StoreID, 
COUNT(DISTINCT FileType) as 'NumberReceived' 
from ETL.CustomerFileExtractLog cfe 
    inner join Final.DimStore ds 
     on cfe.StoreID = ds.NABPNumber 
where Customer ='ComputerRx' 
and TimeStamp >= DATEADD(DAY, -1, GETDATE()) 
Group by StoreName, 
StoreID 
having COUNT(DISTINCT FileType) < 3 
order by StoreName 

答えて

1

で区切られたACシングルコラムでそれらを置くことに引っかかっています

;WITH CTE AS (
    SELECT 
     ds.StoreName, 
     StoreID, 
     FileType 
     FROM fILETYPE t 
     INNER JOIN ETL.CustomerFileExtractLog cfe 
      inner join Final.DimStore ds 
       on cfe.StoreID = ds.NABPNumber 
     where Customer ='ComputerRx' 
     and TimeStamp >= DATEADD(DAY, -1, GETDATE()) 
     Group by StoreName, 
     StoreID 
     having COUNT(DISTINCT FileType) < 3 ) 

Select 
    StoreName, 
    StoreID, 
    COUNT(DISTINCT FileType) as 'NumberReceived', 
    STUFF((SELECT ', ' + CAST(Files AS VARCHAR(50)) FileNAmes 
FROM CTE 
WHERE StoreID = C.StoreID 
FOR XML PATH(''), TYPE) 
.value('.','NVARCHAR(MAX)'),1,2,' ') 
FROM CTE C 
関連する問題