Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 每个ID返回2个唯一答案_Sql_Sql Server - Fatal编程技术网

Sql 每个ID返回2个唯一答案

Sql 每个ID返回2个唯一答案,sql,sql-server,Sql,Sql Server,我有一个SQL查询,它为我需要的东西提取了太多的信息。我当前的查询如下所示: USE LetterGeneration SELECT g.LetterGenerationTemplateRequestId, cast(H.CreatedDate as time) as Time, s.StatusKey FROM LetterGenerationStatusHistory H INNER JOIN LetterGenerationStatus S ON H.L

我有一个SQL查询,它为我需要的东西提取了太多的信息。我当前的查询如下所示:

USE LetterGeneration 

SELECT g.LetterGenerationTemplateRequestId,
      cast(H.CreatedDate as time) as Time, 
      s.StatusKey 

FROM LetterGenerationStatusHistory H

INNER JOIN LetterGenerationStatus S
ON H.LetterGenerationStatusId = s.LetterGenerationStatusId 
INNER JOIN LetterGeneration G
ON g.LetterGenerationId = h.LetterGenerationId

WHERE g.LetterGenerationTemplateRequestId IN (SELECT [LetterGenerationTemplateRequestId]
                                        FROM [LetterGenerationTemplateRequest]
                                        WHERE CreatedDate >= DATEADD(day,-90, GETDATE()))
AND (s.StatusKey = 'QC1'
OR s.StatusKey = 'Ready')


ORDER BY LetterGenerationTemplateRequestId, h.CreatedDate ASC
LetterGenerationTemplateRequestId   Time          StatusKey
1732189                          01:14:24.1700000   QC1
1732189                          10:13:25.4730000   READY
1732190                          01:14:26.6600000   QC1
1732190                          01:14:26.7230000   QC1
1732190                          01:14:26.7970000   QC1
1732190                          01:14:26.8770000   QC1
1732190                          01:14:26.9500000   QC1
1732190                          01:14:27.0370000   QC1
1732190                          01:14:27.1100000   QC1
1732190                          04:29:17.7170000   READY
1732190                          04:29:33.8500000   READY
1732190                          04:29:50.7900000   READY
Request ID  Time    Status
1732189 1:14:24 AM  QC1
1732189 10:13:25 AM READY
1732190 1:14:27 AM  QC1
1732190 4:29:18 AM  READY
1732191 1:14:30 AM  QC1
1732191 4:39:28 AM  READY
我得到的结果如下所示:

USE LetterGeneration 

SELECT g.LetterGenerationTemplateRequestId,
      cast(H.CreatedDate as time) as Time, 
      s.StatusKey 

FROM LetterGenerationStatusHistory H

INNER JOIN LetterGenerationStatus S
ON H.LetterGenerationStatusId = s.LetterGenerationStatusId 
INNER JOIN LetterGeneration G
ON g.LetterGenerationId = h.LetterGenerationId

WHERE g.LetterGenerationTemplateRequestId IN (SELECT [LetterGenerationTemplateRequestId]
                                        FROM [LetterGenerationTemplateRequest]
                                        WHERE CreatedDate >= DATEADD(day,-90, GETDATE()))
AND (s.StatusKey = 'QC1'
OR s.StatusKey = 'Ready')


ORDER BY LetterGenerationTemplateRequestId, h.CreatedDate ASC
LetterGenerationTemplateRequestId   Time          StatusKey
1732189                          01:14:24.1700000   QC1
1732189                          10:13:25.4730000   READY
1732190                          01:14:26.6600000   QC1
1732190                          01:14:26.7230000   QC1
1732190                          01:14:26.7970000   QC1
1732190                          01:14:26.8770000   QC1
1732190                          01:14:26.9500000   QC1
1732190                          01:14:27.0370000   QC1
1732190                          01:14:27.1100000   QC1
1732190                          04:29:17.7170000   READY
1732190                          04:29:33.8500000   READY
1732190                          04:29:50.7900000   READY
Request ID  Time    Status
1732189 1:14:24 AM  QC1
1732189 10:13:25 AM READY
1732190 1:14:27 AM  QC1
1732190 4:29:18 AM  READY
1732191 1:14:30 AM  QC1
1732191 4:39:28 AM  READY
我想要的是,对于状态为QC1和状态为READY的每个请求ID,只看到一个结果。所以理想情况下,它应该是这样的:

USE LetterGeneration 

SELECT g.LetterGenerationTemplateRequestId,
      cast(H.CreatedDate as time) as Time, 
      s.StatusKey 

FROM LetterGenerationStatusHistory H

INNER JOIN LetterGenerationStatus S
ON H.LetterGenerationStatusId = s.LetterGenerationStatusId 
INNER JOIN LetterGeneration G
ON g.LetterGenerationId = h.LetterGenerationId

WHERE g.LetterGenerationTemplateRequestId IN (SELECT [LetterGenerationTemplateRequestId]
                                        FROM [LetterGenerationTemplateRequest]
                                        WHERE CreatedDate >= DATEADD(day,-90, GETDATE()))
AND (s.StatusKey = 'QC1'
OR s.StatusKey = 'Ready')


ORDER BY LetterGenerationTemplateRequestId, h.CreatedDate ASC
LetterGenerationTemplateRequestId   Time          StatusKey
1732189                          01:14:24.1700000   QC1
1732189                          10:13:25.4730000   READY
1732190                          01:14:26.6600000   QC1
1732190                          01:14:26.7230000   QC1
1732190                          01:14:26.7970000   QC1
1732190                          01:14:26.8770000   QC1
1732190                          01:14:26.9500000   QC1
1732190                          01:14:27.0370000   QC1
1732190                          01:14:27.1100000   QC1
1732190                          04:29:17.7170000   READY
1732190                          04:29:33.8500000   READY
1732190                          04:29:50.7900000   READY
Request ID  Time    Status
1732189 1:14:24 AM  QC1
1732189 10:13:25 AM READY
1732190 1:14:27 AM  QC1
1732190 4:29:18 AM  READY
1732191 1:14:30 AM  QC1
1732191 4:39:28 AM  READY

如何将结果限制为每个ID仅显示1个状态结果?我在这里检查了一些其他问题,并试图调整它们以适应我的查询,但我对SQL的有限知识使其变得非常困难。

您可以使用行号:

ROW_NUMBER语法中的ORDER BY指定所需的行。在本例中,它是最近的一行


您可以更改外部的1,以获得每组任意多的行。

使用您正在使用的数据库标记您的问题。请使用哪个数据库标记您的问题。每个id/状态的显示时间是什么时候?数据库名称是LetterGeneration,我使用的是Microsoft SQL Server Management Studio 2008尝试此操作时,我发现位于最后一个t上方的单个t出现错误,clauseI修复了t缺少右括号的问题,我得到了一些结果,但这只是就绪状态,不是QC1状态too@D.Morley . . . 对这个问题的误解。只需将状态添加到分区中即可。