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
提供一行。
我有一个包含 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
提供一行。