我试图列出tbldoc的多个实例。[docid]来自tbldoc,其中tbldoc。[filename]不止一次出现,id就像它们用逗号分隔并按[filename]分组
this code works great to find duplicates:
SELECT cast([filename] as varchar(max)),
COUNT(cast([filename] as varchar(max)))
FROM tbldoc
GROUP BY cast([filename] as varchar(max))
HAVING ( COUNT(cast([filename] as varchar(max))) > 1 )
但是当我尝试添加[docid]时出现错误:
专栏' tbldoc.DocID'在选择列表中无效,因为它不是 包含在聚合函数或GROUP BY子句中。
这就是我想要的:
SELECT [docid], cast([filename] as varchar(max)),
COUNT(cast([filename] as varchar(max)))
FROM tbldoc
GROUP BY cast([filename] as varchar(max))
HAVING ( COUNT(cast([filename] as varchar(max))) > 1 )
我不知道如何让所有[docid]列表以逗号分隔,我在sql方面是一个非常新的用户。
这是我想看到的输出:
[docids] | [filemame] | [实例]
12345,12346 | excelfile.xls | 3
提前感谢帮助人/女孩! =)
答案 0 :(得分:0)
Iyosha,
您需要将第一个结果集重新加入全表以获取DocID。我将CAST()作为读取来保存一些输入。
;with CountedFiles as
(
SELECT
filename,
COUNT(filename) as Total
FROM tbldoc
GROUP BY filename
HAVING COUNT(filename) > 1
)
select
cf.filename,
cf.Total,
td.DocID
from CountedFiles as cf
inner join tbldoc at td
on td.filename = cf.filename;
这将返回一个DocId,一个文件名和每行的计数。然后,您可以按照Adam的链接将其转换为逗号列表。