gpt4 book ai didi

sql - 使用无序字段作为条件为每个员工选择一行

转载 作者:行者123 更新时间:2023-12-04 19:21:29 30 4
gpt4 key购买 nike

我有一个如下所示的数据集。

EMPLID  PHONE_TYPE  PHONE
------ ---------- --------
100 HOME 111-1111
100 WORK 222-2222
101 HOME 333-3333
102 WORK 444-4444
103 OTHER 555-5555

我想使用 PHONE_TYPE 字段为每个员工选择一行来建立首选项。如果员工有家庭电话号码,就像员工 100 和 101 一样。如果家庭电话号码不存在,我想要工作号码(员工 102),作为最后的手段,我会选择 OTHER编号与员工 103 相同。实际上,我的表中的 PHONE_TYPE 字段大约有十几个值,因此我需要能够扩展任何解决方案,使其不仅仅包含我在示例中显示的三个值。有什么想法吗?谢谢。

最佳答案

您需要添加一个 phone_types 表(Phone_Type TEXT(Whatever), Priority INTEGER)。在此表中,列出每个 Phone_Type 值并为其分配优先级(在您的示例中,HOME 为 1、WORK 2、OTHER 3 等)。

然后,创建一个 View ,将 Phone_Types 中的 Priority 列连接到 Phone_Numbers 表(假设我们称之为 Phone_Numbers_Ex)。

现在,您有多种选择可以使用给定 emplID 的 MIN(Priority) 从 Phone_Numbers_Ex 获取记录,其中最清晰的可能是:

SELECT * FROM Phone_Numbers_Ex P1 WHERE NOT EXISTS
(SELECT * FROM Phone_Numbers_Ex P2 WHERE P2.EmplID = P1.EmplID AND P2.Priority < P1.Priority)

另一种方法是按照 SELECT EmplID, MIN(Priority) AS Priority FROM Phone_Numbers_Ex GROUP BY EmplID 的方式声明另一个 View 或内部查询。然后在 EmplID 和 Priority 上加入这个后面的 Phone_Numbers_Ex。

关于sql - 使用无序字段作为条件为每个员工选择一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3133785/

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