【发布时间】:2020-08-28 11:38:57
【问题描述】:
我正在努力寻找适合这种情况的最佳解决方案。 我必须将帐户和事件以 1:N 的方式相互关联。 我想要一个查询,它可以在不同的时间段内提供具有打开状态、关闭状态等的事件总数。例如,过去 15 天打开的门票,过去 30 天打开的门票。 预期输出示例(未显示所有列):
`+--------------+---------------+---------------+----------------+-----------------+
| TckOpenLast7 | TckOpenLast15 | TckOpenLast30 | TckClosedLast7 | TckClosedLast15 |
+--------------+---------------+---------------+----------------+-----------------+
| 40463 | 50463 | 60463 | 4 | 8 |
+--------------+---------------+---------------+----------------+-----------------+`
所以我尝试了下面这个简单的查询并给出了正确的结果,但我需要一个更优雅、性能更好的查询。
Select TckOpenLast7= (Select Count(incidentId) From Incident where CreatedOn >= DATEADD(DAY, -7, GETDATE()) And statecode=0 And CustomerId=@Accid),
TckOpenLast15=(Select Count(incidentId) From Incident where CreatedOn >= DATEADD(DAY, -15, GETDATE() )And statecode=0 And CustomerId=@Accid),
TckOpenLast30=(Select Count(incidentId) From Incident where CreatedOn >= DATEADD(DAY, -30, GETDATE()) And statecode=0 And CustomerId=@Accid),
TckClosedLast7=(Select Count(incidentId) From Incident where CreatedOn >= DATEADD(DAY, -7, GETDATE()) And statecode=1 And CustomerId=@Accid),
TckClosedLast15=(Select Count(incidentId) From Incident where CreatedOn >= DATEADD(DAY, -15, GETDATE()) And statecode=1 And CustomerId=@Accid),
TckClosedLast30=(Select Count(incidentId) From Incident where CreatedOn >= DATEADD(DAY, -30, GETDATE()) And statecode=1 And CustomerId=@Accid),
TckInProcessLast7=(Select Count(incidentId) From Incident where CreatedOn >= DATEADD(DAY, -7, GETDATE()) And statecode=1 And CustomerId=@Accid),
TckInProcessLast15=(Select Count(incidentId) From Incident where CreatedOn >= DATEADD(DAY, -15, GETDATE()) And statecode=1 And CustomerId=@Accid),
TckInProcessLast30=(Select Count(incidentId) From Incident where CreatedOn >= DATEADD(DAY, -30, GETDATE()) And statecode=1 And CustomerId=@Accid)
我正在开发一个使用 ADO.Net 连接从 sql server 数据库中检索数据的 SSIS 包。
【问题讨论】:
标签: sql sql-server ssis