首页 > 解决方案 > 每个 ID 仅选择一个值 - SQL Server

问题描述

我不知道这是否可能,我什至不知道如何谷歌它。

我正在使用 SQL Server 2014。

现在我有一个 SP,它输出一个包含 MovementID、Vehicle、VehicleType 和 Total of sales 数据的表。但它将所有车辆 ID 和车辆类型汇总在一起。

我需要分开车辆,我可以。问题是总数出现重复或重复等。

那么,我怎样才能每个 ID 只选择一次该列(在示例中为 MovementID)。

当然,我会继续尝试,但任何想法都会受到赞赏。

[示例(通过查看更清楚)

标签: sqlsql-serversortingquerying

解决方案


您可以通过 MovementID 对记录进行分区,然后为分区中的每一行生成一个ROW_NUMBER。然后,您可以使用IIF仅在行号为 1 时显示总计,即该行是分区中的第一行。它应该看起来像这样:

SELECT MovementID, VehicleID, VehicleType, IIF(rowno = 1, Total, NULL)
FROM
(
    SELECT MovementID, VehicleID, VehicleType, Total, 
     ROW_NUMBER() OVER (PARTITION BY MovementID ORDER BY MovementID) AS rowno
    FROM <WHAT_I_HAVE_NOW>
) tmp

推荐阅读