gpt4 book ai didi

sql - 按第二列分组排序

转载 作者:行者123 更新时间:2023-12-04 23:11:45 24 4
gpt4 key购买 nike

一直在尝试解决这个问题,但没有成功。

这是我的 table

SN      PID
---- ---------
1 NULL
2 1000005
3 NULL
4 1000002
5 1000005
6 NULL
7 1000002
8 NULL
9 1000005

我需要按 SN 排序,但是当 PID 不为空时,它需要将它们组合在一起。因此我正在寻找的结果是

SN      PID
---- ---------
1 NULL
2 1000005
5 1000005 -- group together with the previous SAME PID
9 1000005 -- continue to group together
3 NULL -- continue to the next unused SN (no more PID = 1000005)
4 1000002
7 1000002 -- group together with the previous SAME PID
6 NULL -- continue to the next unused SN
8 NULL

感谢任何人的建议。谢谢!

最佳答案

我将通过使用等于所有具有相同 PID 的行的 MIN SN 或等于 的人工列来解决此问题当 PID 为空时的 SN

SELECT *,
CASE
WHEN PID IS NULL THEN SN
ELSE (SELECT MIN(t2.SN) FROM MyTable t2 WHERE t2.PID=t1.PID)
END AS sortby
FROM MyTable t1
ORDER BY sortby, SN

如果您需要在输出中排除 sortby,您可以使用上面的 CTE,或者您可以将 CASE 表达式直接插入到 ORDER BY 中并将其保留在 SELECT 列表之外.

关于sql - 按第二列分组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54770148/

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