sql - 在 SQL 中,尝试为触发 from 条件的每个实例返回一条记录

标签 sql

也许我对这个问题的看法完全错误,但这里是。

我们有一个数据库,它是我们在办公室使用的某些 CRM 软件的后端。老板想要一个简单的查询来提取客户及其配偶的生日。

表结构如下:

Client Details Table:
Client Name, Client Birthday, Spouse Name, Spouse Birthday, <etc>

我有一个带有案例选择的简单查询,它将确定客户的生日或配偶的生日是否在下个月的任何时间。

查询压缩如下:

SELECT a.*
FROM
  (SELECT
     (CASE    WHEN <birthday calculation>
              ELSE NULL 
      END) as WhoHasBDay,
      ClientName,
      SpouseName
   FROM
     ClientDetailsTable) as a
WHERE
   a.WhoHasBDay IS NOT NULL

这将返回客户或配偶在接下来的 X 天内过生日的所有条目。

但是,如果客户和他们的配偶在接下来的 X 天内过生日,我希望查询为每人返回一次结果。

IE,这里是下面的数据

CLIENT X: Birthday in 5 days
CLIENT Y: Spouse's Birthday in 8 days
CLIENT Z: Birthday in 3 days, Spouse's Birthday in 9 days.

我想要的结果集是

CLIENT X BDAY T+5
CLIENT Y SPOUSE BDAY T+8
CLIENT Z BDAY T+3
CLIENT Z SPOUSE BDAY T+9

也许我以错误的方式解决了这个问题,在这种情况下,我们将不胜感激关于更好的攻击方法的建议。否则,如果有解决方案,请告诉我。

最佳答案

我会将此作为两个独立查询的 UNION 来处理:一个针对客户,一个针对他们的配偶。

SELECT ClientName, NULL AS SpouseName, Birthday
    FROM ClientDetailsTable
    WHERE <birthday calculation is true>
UNION ALL
SELECT ClientName, SpouseName, SpouseBirthday
    FROM ClientDetailsTable
    WHERE <spouse birthday calculation is true>

关于sql - 在 SQL 中,尝试为触发 from 条件的每个实例返回一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12696548/

相关文章:

sql - 在 .sql 脚本中定义和使用变量

mysql - SQL查询获取两周之间的数据?

mysql - 获取mysql中两个表的所有字段

sql - 如何编写一个选择查询或服务器端函数,从许多数据点生成一个整洁的时间流图?

sql - PostgreSQL。物化 View 不能使用绑定(bind)参数定义

MySQL用外键关系计算SUM

sql - 传递包含空格的字符串时存储过程中出现语法错误

MySQL 存在使查询花费太长时间

SQL 字符串让我抓狂

sql - 是否有 PostgreSQL 等同于 Oracle 的分析?