Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有趣的SQL查询问题_Sql_Sql Server 2008 - Fatal编程技术网

有趣的SQL查询问题

有趣的SQL查询问题,sql,sql-server-2008,Sql,Sql Server 2008,我有一张这样的桌子(是的,结构很糟糕,无法更改): 注意:时间戳是日期时间数据类型 我需要一个SQL查询,它将根据AssociationID提供从“打开”到“关闭”之间经过的时间(分钟)。 因此,输出表如下所示: AssociationID | OpenToCloseTime f2da3 | 30 j7s9d | 70 SQL查询是什么样子的?我非常不适应这里的环境,非常感谢您的帮助 这就是你要找的吗?如果associationId的状态是唯一的,则

我有一张这样的桌子(是的,结构很糟糕,无法更改):

注意:时间戳是日期时间数据类型

我需要一个SQL查询,它将根据
AssociationID提供从“打开”到“关闭”之间经过的时间(分钟)。

因此,输出表如下所示:

AssociationID | OpenToCloseTime
   f2da3      |    30
   j7s9d      |    70

SQL查询是什么样子的?我非常不适应这里的环境,非常感谢您的帮助

这就是你要找的吗?如果associationId的状态是唯一的,则此操作将有效

WITH A AS
(
    SELECT * FROM tableA WHERE status = 'Close' 
)
,B as
(
    SELECT * FROM tableA WHERE Status = 'Open'
)
SELECT
    A.AssociationID,
    DATEDIFF(minute,A.TimeStamp,B.TimeStamp) 
FROM A 
INNER JOIN B ON
A.AssociationID = B.AssociationId

您使用三种不同的数据库管理系统为问题添加了标签:
mysql
sqlserver
sqlite
。你用的是哪一个?你用的是什么数据库?您应该只使用适当的数据库标记您的问题。时间戳的数据类型是什么?请具体说明DBMS的选择。@TangoAlee。换言之,如果没有合理的数据库标签,您不可能得到这个问题的好答案。当问题对目标系统如此困惑时,倾向于回答的人可能不会回答。这很有趣?非常感谢。我会测试的,像冠军一样工作。谢谢你,约翰尼
WITH A AS
(
    SELECT * FROM tableA WHERE status = 'Close' 
)
,B as
(
    SELECT * FROM tableA WHERE Status = 'Open'
)
SELECT
    A.AssociationID,
    DATEDIFF(minute,A.TimeStamp,B.TimeStamp) 
FROM A 
INNER JOIN B ON
A.AssociationID = B.AssociationId