gpt4 book ai didi

mysql - SQL查询根据特定条件显示唯一记录

转载 作者:行者123 更新时间:2023-11-29 12:22:32 27 4
gpt4 key购买 nike

[在发布此问题之前我已经解决了很多问题。]

我有一个包含 4 个字段的表。它是ClientId、ClientName、ClientAddress、ClientCity

现在,我有一个自动完成文本框控件,我需要在其中获取并显示客户名称。

问题是在我们的数据库中,我们有来自同一城市不同地址的相同客户。

现在给我的要求是用户应该能够看到“ClientName”或“ClientName + ClientCity”或“ClientName+ClientCity+ClientAddress”,以便用户轻松选择客户端。

这意味着我需要向查询添加一列,直到它变得唯一。

我确信一定有一些简单的解决方案可以解决这个问题,但我在过去的两天里还没有得到解决方案。

如下面的示例数据所示,如果我仅向最终用户显示“D”作为客户端名称,他会困惑于他必须选择哪个客户端“D”。因此,我们需要连接城市和地址以使其唯一。

enter image description here

我期待如下的输出。

enter image description here

最佳答案

您可以使用COUNT() OVER()来实现:

;WITH CTE AS(
SELECT *,
ByName = COUNT(*) OVER(PARTITION BY ClientName),
ByCity = COUNT(*) OVER(PARTITION BY ClientName,ClientCity)
FROM Client
)
SELECT
CASE
WHEN ByName = 1 AND ByCity = 1 THEN ClientName
WHEN ByName > 1 AND ByCity = 1 THEN ClientName + ', ' + ClientCity
WHEN ByName > 1 AND ByCity > 1 THEN ClientName + ', ' + ClientCity + ', ' + ClientAddress
END
FROM CTE
ORDER BY ClientID

结果

Client
--------------------------------------------------------
A
B
C, New York
D, London, LSE Houghton Streen London WC2A 2AE
D, London, Hard Rock Cafe London 150 Old Park Lane
F
C, Paris

参见SQL Fiddle

关于mysql - SQL查询根据特定条件显示唯一记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28804096/

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