不同行中两个日期之间的 SQL 持续时间

标签 sql tsql sql-server-2000

如果有人能帮助我构建一个 MSSQL Server 2000 查询,返回客户的 A 条目和他们的 B 条目之间的持续时间,我将不胜感激。

并非所有客户都有 B 记录,因此不会返回任何结果。

客户审计

+---+---------------+---+----------------------+
| 1 | Peter Griffin | A | 2013-01-01  15:00:00 |
| 2 | Martin Biggs  | A | 2013-01-02  15:00:00 |
| 3 | Peter Griffin | C | 2013-01-05  09:00:00 |
| 4 | Super Mario   | A | 2013-01-01  15:00:00 |
| 5 | Martin Biggs  | B | 2013-01-03  18:00:00 |
+---+---------------+---+----------------------+

我希望得到类似于以下的结果:

+--------------+----------------+
| Martin Biggs | 1 day, 3 hours |
+--------------+----------------+

最佳答案

像下面这样的东西(不知道你的模式,所以你需要更改对象的名称)就足够了。

SELECT ABS(DATEDIFF(HOUR, CA.TheDate, CB.TheDate)) AS HoursBetween
FROM dbo.Customers CA
INNER JOIN dbo.Customers CB
ON CB.Name = CA.Name
AND CB.Code = 'B'
WHERE CA.Code = 'A'

关于不同行中两个日期之间的 SQL 持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14399197/

相关文章:

sql - 动态 SQL - 执行时间长 - 仅限第一次

sql - SQL-GROUP BY和COALESCE的丑陋组合

oracle - 如何从 SQL Server 2000 查询 Oracle 表?

mysql - 选择按另一个属性分组的促销项目

python - 并非所有参数都在SQL语句中使用,sql语句中的变量

c# - C# 和 T-SQL 自带哪些统计函数?

asp.net - 没有用户名和密码的连接字符串,asp.net

MySQL 插入到不存在的地方

MYSQL 更新来自同一个表的值

sql-server - TSQL STATS_STREAM(未记录的功能)的格式是什么?它包含所有统计数据吗?