如何创建一个 function/method 来计算文件在特定文件夹中的数量 - T-SQL
How to create a function/method which counts how may files are within a particular folder - T-SQL
我需要帮助创建某种 function/method 来计算特定文件夹中有多少文件。这是我正在使用的示例数据集:
FullPath
Type
Age (Years)
Computer\User01\MyDocuments\
Folder
4
Computer\User01\MyDocuments\thisisafile.xlsx
File
2.2
Computer\User01\MyDocuments\anotherfile.doc
File
1
Computer\User01\MyDocuments\onemorefile.doc
File
1.5
Computer\User01\MyDocuments\secondfile.pptx
File
1.6
从样本数据集可以看出,文件夹:“Computer\User01\MyDocuments”包含4个文件。我可以编写以下代码来显示此文件夹中有多少文件:
SELECT COUNT(*) AS No_of_files
FROM SampleDataSet
WHERE Type = 'File'
AND FullPath LIKE 'Computer\User01\MyDocuments\%'
但是,我的数据集包含数十万个文件夹,所有文件夹都关联了不同数量的文件,因此我无法每次都在 LIKE 语句中指定“FullPath”。
我想要的输出如下所示:
FullPath
Type
No_of_files
Computer\User01\MyDocuments\
Folder
1500
Computer\User01\Pictures\
Folder
20
Computer\User01\Desktop\
Folder
14
Computer\User01\Downloads\
Folder
10 000
有谁知道这是否可行以及是否有有效的方法?
非常感谢任何帮助,谢谢!
似乎您可以使用 table 中的 JOIN
到自身来实现此目的。像这样:
SELECT D.FullPath,
D.[Type],
COUNT(F.FullPath) AS Files
FROM dbo.YourTable D
LEFT JOIN dbo.YourTable F ON F.FullPath LIKE D.FullPath + '%'
AND F.[Type] = 'File'
WHERE D.[Type] = 'Folder'
GROUP BY D.FullPath,
D.[Type];
我需要帮助创建某种 function/method 来计算特定文件夹中有多少文件。这是我正在使用的示例数据集:
FullPath | Type | Age (Years) |
---|---|---|
Computer\User01\MyDocuments\ | Folder | 4 |
Computer\User01\MyDocuments\thisisafile.xlsx | File | 2.2 |
Computer\User01\MyDocuments\anotherfile.doc | File | 1 |
Computer\User01\MyDocuments\onemorefile.doc | File | 1.5 |
Computer\User01\MyDocuments\secondfile.pptx | File | 1.6 |
从样本数据集可以看出,文件夹:“Computer\User01\MyDocuments”包含4个文件。我可以编写以下代码来显示此文件夹中有多少文件:
SELECT COUNT(*) AS No_of_files
FROM SampleDataSet
WHERE Type = 'File'
AND FullPath LIKE 'Computer\User01\MyDocuments\%'
但是,我的数据集包含数十万个文件夹,所有文件夹都关联了不同数量的文件,因此我无法每次都在 LIKE 语句中指定“FullPath”。
我想要的输出如下所示:
FullPath | Type | No_of_files |
---|---|---|
Computer\User01\MyDocuments\ | Folder | 1500 |
Computer\User01\Pictures\ | Folder | 20 |
Computer\User01\Desktop\ | Folder | 14 |
Computer\User01\Downloads\ | Folder | 10 000 |
有谁知道这是否可行以及是否有有效的方法?
非常感谢任何帮助,谢谢!
似乎您可以使用 table 中的 JOIN
到自身来实现此目的。像这样:
SELECT D.FullPath,
D.[Type],
COUNT(F.FullPath) AS Files
FROM dbo.YourTable D
LEFT JOIN dbo.YourTable F ON F.FullPath LIKE D.FullPath + '%'
AND F.[Type] = 'File'
WHERE D.[Type] = 'Folder'
GROUP BY D.FullPath,
D.[Type];