SQL 服务器查询以显示所有列,但其中一列具有不同的值(不对任何内容进行分组)

SQL Server query to display all columns but with distinct values in one of the columns (not grouping anything)

我有一个包含 106 列的 table。其中一列是具有 16 种类型的 "Type" 列。

我想要 16 行,其中类型不同。因此,第 1 行的类型为 "Construction",第 2 行的类型为 "Elevator PVT",等等

使用 Navicat。

根据我目前发现(和理解)的情况,我不能使用 Distinct(因为它会查看所有行),我不能使用 Group By(因为那是用于聚合数据,我'我不想做),所以我被困住了。

请温柔点-我真的很新。

下面是table的一部分(我怎么才能正常分享呢?)- 真的很大所以我没有分享全部。下面是我要查找的部分结果,其中 Violation_Type 是唯一的,其余列显示。

明白了..天哪...(花了我很长时间,但明白了...)

  D_ID   B_ID   V_ID       V_Type      S_ID   c_f   d_y    l_u    p_s   du_p  
 ------ ------ ------- -------------- ------ ----- ------ ------ ----- ------ 
   184    117   V 032   Elevator PVT      2     8      0      0               
     4    140   V 100   Construction      1     8      0      0               
    10    116   V 122   Electric                1      8   2005     0      0  
    11    117   V 033   Boiler Local      1     0   2005      0     0       

您可以为此使用 ROW_NUMBER

SELECT *
FROM(
    SELECT *,
        rn = ROW_NUMBER() OVER(PARTITION BY V_Type ORDER BY (SELECT NULL))
    FROM tbl
)t
WHERE rn = 1

根据您要优先处理的行修改 ORDER BY


来自文档:

Returns the sequential number of a row within a partition of a result set, starting at 1 for the first row in each partition.

这意味着对于分区中的每一行(由 PARTITION BY 子句指定),sql-server 根据 1 中指定的顺序分配一个编号=12=] 子句。

ROW_NUMBER 需要一个 ORDER BY 子句。 SELECT NULL 告诉 sql-server 我们不想强制执行特定命令。我们只想要按分区编号的行。

WHERE rn = 1 显然只过滤 ROW_NUMBER 为 1 的行。这为每个可用的 V_TYPE 提供一行。