gpt4 book ai didi

sql - 不确定如何在SQL Server中订购

转载 作者:行者123 更新时间:2023-12-02 09:23:34 24 4
gpt4 key购买 nike

我正在尝试订购结果集,它看起来确实很简单,但是我有点麻烦。

一个人可以具有多种地址类型,NULL,Civic或Mailing。
我希望在顶部列出具有NULL地址的任何人,然后再列出其公民和邮寄地址。

如果您没有null地址,那么他们的公民和/或邮寄地址会追随拥有null的任何人。

我试过按地址排序将只首先列出所有null,按名称,地址排序将部分起作用,但不能保证人们将null放在第一位。

以这套为例

ID  Person      Address
-------------------------
1 Person A Civic
1 Person A Mailing
2 Person B NULL
2 Person B Civic
2 Person B Mailing
3 Person C NULL
3 Person C Civic
3 Person C Mailing

应该:
ID   Person     Address
-------------------------
2 Person B NULL
2 Person B Civic
2 Person B Mailing
3 Person C NULL
3 Person C Civic
3 Person C Mailing
1 Person A Civic
1 Person A Mailing

最佳答案

Tim Biegeleisen在计数address IS NULL的记录数方面有正确的想法。我认为可以通过在Windows子句中使用sum而不是在子查询中加入查询,来使查询更优雅(并且可能会表现得更好)。

SELECT id, person, address
FROM (SELECT id,
person,
address,
SUM(CASE WHEN PERSON IS NULL THEN 1 ELSE 0 END) OVER
(PARTITION BY person) AS s
FROM addresses) t
ORDER BY s DESC, person ASC, address ASC

关于sql - 不确定如何在SQL Server中订购,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39856639/

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