SELECT tp.ProjectName, tp.ProjectDescription, dev.FullName as 'Developer'
, o.FullName as 'Owner', tp.StartDate, tp.EndDate, tp.ProjectStatus,
tp.CompletionPct, Count(tb.ProjectID) as 'NumberofBugs'
FROM tblBTProject tp
LEFT JOIN tblBTBugs tb ON tp.ProjectID = tb.ProjectID
--Get user fullnames by ID
LEFT JOIN CollectionsOperationsControl.dbo.tblCOCUser as dev
ON tp.Developer = dev.CorpID
LEFT JOIN CollectionsOperationsControl.dbo.tblCOCUser as o
ON tp.Owner = o.CorpID
WHERE CAST(CONVERT(VARCHAR(10), tp.CreationDate, 101) AS DATETIME) BETWEEN @StartDate AND @EndDate
AND (tp.Developer IN (SELECT * FROM dbo.fnSplitList(LTRIM(RTRIM(@Developer)), ',')))
AND (tp.Owner IN (SELECT * FROM dbo.fnSplitList(LTRIM(RTRIM(@Owner)), ',')))
GROUP BY tp.ProjectID, tp.ProjectName, tp.ProjectDescription, dev.FullName, o.FullName, tp.StartDate, tp.EndDate,
tp.ProjectStatus, tp.CompletionPct
ORDER BY tp.ProjectID
上記のコードでは、tblBTBugs の tp.ProjectID のすべてのインスタンスの数を返したい (tblBTProject からの tp.ProjectID による結合で) これをストア プロシージャとして実行しましたが、レポート サービスで複数選択を行うと、 「開発者」と「所有者」では、一致するすべてのレコードではなく、各「開発者」または「所有者」のインスタンスが 1 つだけ表示されます。それぞれのインスタンスを 1 つだけ返す結合の問題ですか? PS に感謝します。ストアド プロシージャに SQL Server 2005 を使用しています。そのパラメータは @StartDate、@EndDate、@Developer & @Owner です
レポート側では、レコードの分割に =JOIN(Parameters!Developer.Value, “,”) を使用しています