我正在使用SSMS 2018,并具有与此类似的表:
<div class="form-group">
<label for="name">Endpoint Name</label>
<input type="text" placeholder="Endpoint Name" name="name" [(ngModel)]="name" required>
</div>
<div ngModelGroup="connection">
<div class="form-group">
<label for="wavefrontInstance">Wavefront Host/IP</label>
<input type="text" placeholder="https://0.0.0.0" name="wavefrontInstance" [(ngModel)]="wavefrontInstance" required>
</div>
<div class="for-group">
<label for="connection.waveFrontProxyPort">Wavefront Proxy Port</label>
<input type="number" placeholder="2878" name="waveFrontProxyPort" [(ngModel)]="waveFrontProxyPort" required>
</div>
</div>
CREATE TABLE DxList (DocID INT, Dx VARCHAR(255), DxDate DATE, CreateDate DATETIME);
INSERT INTO DxList (DocID, Dx, DxDate, CreateDate)
VALUES (6018, 'OSDD', '10/01/2015', '10/09/2015 12:27');
INSERT INTO DxList (DocID, Dx, DxDate, CreateDate)
VALUES (6018, 'ADHD', '10/01/2015', '10/09/2015 18:14');
我想获取基于SELECT *
FROM DxList
DocID Dx DxDate CreateDate
6018 OSDD 10/1/2015 10/9/2015 12:27
6018 ADHD 10/1/2015 10/9/2015 18:14
的最新Dx
。 DxDate
可以使用,但是,如果有类似上面的领带(2015年10月1日),我希望最新的领带可以基于Row_number
。
在这种情况下,我希望结果是:
CreateDate
我相信我可以在此查询中使用DocID Dx DxDate CreateDate
6018 ADHD 10/1/2015 10/9/2015 18:14
,但不确定如何使用。到目前为止,这是我的查询:
Rank()
我相信我正在寻找类似的东西:
排序依据(案例,当rank1 = rank1时创建日期,否则DxDate结束)DESC
当然这是行不通的,因为我需要某种迭代并且不能将其放在子查询中。 我也不能使用任何派生表来解决此问题。这可能吗? 非常感激!
答案 0 :(得分:2)
您应该可以将ROW_NUMBER
与两层ORDER BY
子句一起使用:
SELECT DocID, Dx, DxDate, CreateDate
FROM
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY DocID ORDER BY DxDate DESC, CreateDate DESC) rn
FROM DxList
) t
WHERE rn = 1;
上述查询与您所想到的相比,唯一的重大变化是DocID
将比较两个具有相同DxDate
和CreateDate
值的记录,以确定哪个一个真的是“第一”。
注意:在您的演示中,两条记录具有不同的 DocID
值,但我认为您希望它们具有相同的值。在上面的演示链接中,我将两个记录更改为具有相同的DocID
值,并且逻辑起作用。
答案 1 :(得分:0)
您只能使用ROW_NUMBER(),并且可以使用ORDER BY CreateDate。
ROW_NUMBER()超过(按DocID排序或按CreateDate DESC排序)为rownum1
答案 2 :(得分:0)
根据您的示例数据,只需要在下面的查询中
SELECT top 1 *
FROM DxList
order by DxDate desc,CreateDate desc
但是根据您的描述,请遵循@Tim提供的查询
在此链接中,您将找到两个查询
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=44fdd4b2e849137cebe9df837ac41a39
DocID Dx DxDate CreateDate
6018 ADHD 01/10/2015 00:00:00 09/10/2015 18:14:00