DECLARE @Folders TABLE( Path VARCHAR(50), Foldername Varchar(50), FolderSize INT)INSERT @FoldersSELECT 'C:\FOLDER1' Path, 'FOLDER1' Foldername, '3000' FolderSize UNION ALLSELECT 'C:\FOLDER2', 'FOLDER2', '4004' UNION ALLSELECT 'C:\FOLDER3', 'FOLDER3', '7010' SELECT * FROM @FoldersDECLARE @Files TABLE( Path VARCHAR(50), Filename Varchar(50), FileSize INT)INSERT @FilesSELECT 'C:\FOLDER1' Path, 'File1.xlsx' Filename, '1024' Filesize UNION ALLSELECT 'C:\FOLDER1' , 'File2.xlsx' , '300' UNION ALLSELECT 'C:\FOLDER1' , 'File3.xlsx' , '2000' UNION ALLSELECT 'C:\FOLDER2' , 'File4.xlsx' , '3000' UNION ALLSELECT 'C:\FOLDER2' , 'File5.xlsx' , '200' UNION ALLSELECT 'C:\FOLDER2' , 'File6.xlsx' , '3145' UNION ALLSELECT 'C:\FOLDER3' , 'File7.xlsx' , '46' UNION ALLSELECT 'C:\FOLDER3' , 'File8.xlsx' , '30' UNION ALLSELECT 'C:\FOLDER3' , 'File9.xlsx' , '2300'select * from @Files
DECLARE @Result TABLE( Path VARCHAR(50),Foldername Varchar(50), FolderSize varchar(50), Filename Varchar(50), FileSize varchar(50))INSERT @ResultSELECT 'C:\FOLDER1' Path, 'FOLDER1' Foldername, '3000' FolderSize,'' Filename, '' Filesize UNION ALLSELECT 'C:\FOLDER1' , '','','File2.xlsx' , '300' UNION ALLSELECT 'C:\FOLDER1' , '','','File3.xlsx' , '2000' UNION ALLSELECT 'C:\FOLDER1' , '','','File3.xlsx' , '2000' UNION ALLSELECT 'C:\FOLDER2', 'FOLDER2', '4004','','' UNION ALLSELECT 'C:\FOLDER2' , '','','File4.xlsx' , '3000' UNION ALLSELECT 'C:\FOLDER2' , '','','File5.xlsx' , '200' UNION ALLSELECT 'C:\FOLDER2' , '','','File6.xlsx' , '3145' UNION ALLSELECT 'C:\FOLDER3', 'FOLDER3', '7010' ,'','' UNION ALLSELECT 'C:\FOLDER3' , '','','File7.xlsx' , '46' UNION ALLSELECT 'C:\FOLDER3' , '','','File8.xlsx' , '30' UNION ALLSELECT 'C:\FOLDER3' , '','','File9.xlsx' , '2300'select * from @result
select fo.path, fo.foldername, CONVERT(VARCHAR,fo.foldersize) AS FolderSize, '' AS FileName, '' AS FileSizeFROM @Folders founionselect fi.path, '', '', fi.Filename, CONVERT(VARCHAR,fi.FileSize)from @Files fiorder by 1,4
SELECT [Path], Foldername, FolderSize, [Filename], FileSizeFROM ( SELECT [Path], [Filename] = CAST(NULL AS Varchar(50)), FileSize = CAST(NULL AS INT), Foldername, FolderSize FROM @Folders UNION ALL SELECT [Path], [Filename], FileSize, Foldername = CAST(NULL AS Varchar(50)), FolderSize = CAST(NULL AS INT) FROM @Files) dORDER BY [Path], Foldername DESC
select f.Path, f.FolderName, f.FolderSize, d.FileName, d.FileSizefrom @Folders f left outer join @Files d on f.Path = d.Pathgroup by grouping sets ((f.Path, Foldername, FolderSize), (f.path, d.FileName, d.FileSize))order by f.Path, d.filename
SELECT Path,FolderName,FolderSize,FileName,FileSizeFROM( SELECT PATH,FolderName,FolderSize,'' AS FileName,'' AS FileSize, 1 AS ID FROM @Folders UNION select PATH,'' AS FolderName,'' as FolderSize,FileName, FileSize,2 AS ID from @Files )EORDER BY PATH,ID