gpt4 book ai didi

sql - 如何编写 SQL 语句以返回基于 X、Y 和 Z 列的不同记录以及表中 A 列的第一个值

转载 作者:行者123 更新时间:2023-12-05 05:30:10 25 4
gpt4 key购买 nike

我正在努力解决这个问题。

我有一个这样的数据表:

表格:

<表类="s-表"><头>Column_AColumn_XColumn_YColumn_Z<正文>1234卡通城市关闭1235星星汽车关闭1226星星汽车关闭3234卡通城市关闭4435星星汽车关闭5555星星汽车关闭5555卡通城市关闭3333星星汽车关闭1111星星汽车关闭
SELECT Distinct
TABLE.Column_X,
TABLE.Column_Y,
TABLE.Column_Z,
FROM TABLE

会返回两条记录

TOON CITY OFF
STAR CARS OFF

但现在我希望表中 A 列的第一个实例的结果显示如下:

TOON CITY OFF 1234
STAR CARS OFF 1235

我正在处理的事情不关心我在表格中输入的数字,但它需要其中一个。它实际上看起来像 50 个不同的值,并且有 4 个我需要一个值但只是其中一个。

我尝试根据表的独特性将表连接回自身并选择 TOP 1 记录并使用 table2.Column_A 作为结果,但这似乎不起作用。

Group By 似乎是解决方案,但我也无法让它发挥作用。

SELECT Column_X, Column_Y, Column_Z, Top 1(Column_A)???
FROM Table
GROUP BY Column_X, Column_Y, Column_Z

最佳答案

我更愿意在这里简单地获取例如 Column_A 中具有最低值的那个:

SELECT Column_X, Column_Y, Column_Z, MIN(Column_A) AS Column_A
FROM yourtable
GROUP BY Column_X, Column_Y, Column_Z;

这很简单,也很简短。它将根据您的示例数据产生此结果:

<表类="s-表"><头>Column_XColumn_YColumn_ZColumn_A<正文>星星汽车关闭1111卡通城市关闭1234

我认为这样更好,因为大多数情况下哪个条目在表格中“最先”出现并不重要,但我们更愿意选择具有最低或最高值的此类条目。

在表中哪个条目作为“第一个”出现通常是随机的并且没有任何意义,除非有一个 id 或序列被用作“排序列”。

但不管怎样,如果我们真的想准确地选择“前”两个条目,我们可以使用 ROW_NUMBER :

WITH sub AS
(SELECT
ROW_NUMBER() OVER(PARTITION BY Column_X, Column_Y, Column_Z
ORDER BY Column_X) AS RowNr,
Column_A, Column_X,Column_Y,Column_Z
FROM yourtable)
SELECT Column_X,
Column_Y,
Column_Z,
Column_A
FROM sub
WHERE RowNr = 1
ORDER BY Column_A;

这会导致可读性变差,但会产生与您在问题中显示的结果完全相同的结果:

<表类="s-表"><头>Column_XColumn_YColumn_ZColumn_A<正文>卡通城市关闭1234星星汽车关闭1235

在这里试试:db<>fiddle

关于sql - 如何编写 SQL 语句以返回基于 X、Y 和 Z 列的不同记录以及表中 A 列的第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74767357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com