【发布时间】:2021-04-01 14:45:25
【问题描述】:
请耐心等待,我是自学成才的,所以我还在学习中,所有的措辞都不清楚。
我有下表:
Table (History h)
| Source ID | Action | Created Date |
| 1 | Standard Filed | 1/5/2021 |
| 2 | Standard Filed | 1/7/2021 |
| 1 | Standard Reviewed | 1/7/2021 |
| 3 | Standard Filed | 1/10/2021 |
| 4 | Standard Filed | 1/15/2021 |
| 5 | Standard Filed | 1/17/2021 |
| 4 | Standard Reviewed | 1/17/2021 |
| 1 | CPR Filed | 1/18/2021 |
| 1 | CPR Reviewed | 1/20/2021 |
| 3 | Standard Reviewed | 1/21/2021 |
| 2 | Standard Reviewed | 2/1/2021 |
| 5 | Standard Reviewed | 2/1/2021 |
我想要的结果是:
|Source ID | Filed Date | Reviewed Date | Difference |
| 1 | 1/5/2021 | 1/7/2021 | 2 |
| 1 | 1/18/2021 | 1/20/2021 | 2 |
| 2 | 1/7/2021 | 2/1/2021 | 25 |
| 3 | 1/10/2021 | 1/21/2021 | 11 |
| 4 | 1/15/2021 | 1/17/2021 | 2 |
| 5 | 1/17/2021 | 2/1/2021 | 15 |
然后我想获取这些结果并获得所有差异的平均值。因此,平均而言,标准或 CPR 项目从归档到审核需要多长时间。
所以上面例子的平均值是 9.5
我目前的查询语言是:
SELECT t1.SOURCE_ID, t1.CREATED_DATE AS 'Reviewed Date', t2.CREATED_DATE AS 'Filed Date', (DateDiff(hour,t2.CREATED_DATE,t1.CREATED_DATE)/24) AS 'Difference'
FROM ((SELECT h.SOURCE_ID, h.CHANGE_VALUE_FROM, h.CHANGE_VALUE_TO, h.CREATED_DATE FROM HISTORY AS h
WHERE (h.CHANGE_VALUE_TO = 'Standard Reviewed' OR h.CHANGE_VALUE_TO = 'CPR Reviewed') AND (h.CREATED_DATE >= '2021-01-01 00:00:00.000')) AS t1
INNER JOIN (SELECT h.SOURCE_ID, h.CHANGE_VALUE_FROM, h.CHANGE_VALUE_TO, h.CREATED_DATE FROM HISTORY as h
WHERE (h.CHANGE_VALUE_TO = 'Standard Filed' OR h.CHANGE_VALUE_TO = 'CPR Filed') AND (h.CREATED_DATE >= '2021-01-01 00:00:00.000')) AS t2 ON (t1.SOURCE_ID = t2.SOURCE_ID) AND (t1.CREATED_DATE >= t2.CREATED_DATE))
ORDER BY SOURCE_ID ASC;
我的结果是:
|SOURCE_ID| Filed Date | Reviewed Date | Difference |
| 1 | 1/5/2021 | 1/7/2021 | 2 |
| *1 | 1/5/2021 | 1/20/2021 | 15 |
| 1 | 1/18/2021 | 1/20/2021 | 2 |
| 2 | 1/7/2021 | 2/1/2021 | 25 |
| 3 | 1/10/2021 | 1/21/2021 | 11 |
| 4 | 1/15/2021 | 1/17/2021 | 2 |
| 5 | 1/17/2021 | 2/1/2021 | 15 |
以上数据的平均值为10.28。
所以有一行不应该出现。我用星号标记了它。
任何帮助,关于如何做的另一个想法,任何真正的东西,都非常感谢。
【问题讨论】:
-
从该查询的外观来看,您的问题明显过于复杂。示例数据和预期结果将真正帮助我们为您提供帮助,以及您要解决的问题的描述。
-
助您一臂之力,化繁为简! minimal reproducible example
-
@Larnu 我已经尝试按照您的建议进行操作。这样更好吗?
-
2/1/2021是从哪里来的Source ID=2以及为什么您的预期结果中缺少Source ID=4? -
@forpas 感谢您指出这一点!在我尝试简化时,我错过了输入一些数据。 2/1/2021 来自第一个表,其中源 id 2 于 2021 年 2 月 1 日进行了审核。我在表格中添加数据是否解决了您的问题?感谢您的帮助!
标签: sql sql-server database sorting ssms