【发布时间】:2015-12-18 09:57:44
【问题描述】:
我想根据上传到系统的源信息显示一系列可供下载的报告。每份报告可能存在多个报告期,并且可能需要上传一个或多个源文件才能使用。
我的表格如下所示:
- 报告 - 存储报告类型 (ReportID) 和说明
- ReportDependency - 存储报告类型 (ReportID) 和 生成该报告的依赖项(可能是一个或多个)(SourceTypeID)
- SourceType - 存储可能上传到系统的不同类型的源文件。
- Source - 存储已上传的源数据文件(SourceTypeID、ReportingPeriodID 和 UploadDateTime)
- 报告期 - 存储各种报告期。
根据可用的资源(上传到系统),我想展示可以生成/下载哪些报告。
我想出了这个,但它不正确:
SELECT
RD.ReportID, RP.ReportingPeriodID, COUNT(S.UploadDateTime) AS
DependenciesUploaded
FROM
ReportDependency RD
INNER JOIN
Source S ON RD.SourceTypeID = S.SourceTypeID
INNER JOIN
ReportingPeriod RP ON S.ReportingPeriodID = RP.ReportingPeriodID
GROUP BY
RP.ReportingPeriodID, RD.ReportID
HAVING
COUNT(S.UploadDateTime) = (SELECT COUNT(SourceTypeID) FROM ReportDependency WHERE ReportID = RD.ReportID)
如果我的数据如下所示:
我应该得到:
- ReportingPeriod 1 的报告 1 可用
- 报告 2 尚不可用
- ReportingPeriod 2 的报告 3 可用
感谢您提供的任何帮助。
罗素
【问题讨论】:
-
"
I have come up with this, but it's not correct:" 你收到错误,还是没有返回你期望的数据? -
不是我期待的结果。 :-)
标签: sql subquery conditional-statements aggregate subset