gpt4 book ai didi

sql - 如何将条件传递给 SQL 中的 MINI 语句

转载 作者:行者123 更新时间:2023-12-05 08:59:11 25 4
gpt4 key购买 nike

我有一个包含以下列的表格

email, id, date 

email+id 上有一个唯一键,因此该表可以包含多个电子邮件地址。 id 可以为空。

我想以格式返回结果

email, first date, number of ids, first id date (if number of ids not null) 

dave@myfirm.con, 2013-06-11, 0, NULL
alan@myfirm.con, 2013-06-12, 2, 2013-06-13

我的查询非常接近我想要的,同时仍然高效。

SELECT TOP (@rows * @page) email, MIN([date]) as [date],COUNT(id) as [ids],
[x] = CASE COUNT(id) WHEN 0 THEN NULL ELSE MIN([date]) END
FROM Table
GROUP BY email ORDER by MIN([date])

但是,此版本的查询返回每封电子邮件的总体 MIN(日期),如果它们有任何条目具有非空 id

如果没有 id,有什么方法可以使 MIN(date) 无效?我正在研究一种解决方案,如果 id 为 0 并获得此值的最小值,则向 date 添加大量天数,但似乎必须有更聪明的方法?

最佳答案

你想要一个有条件的 min(),所以在 min() 中使用 case:

SELECT TOP (@rows * @page) email,
MIN([date]) as [date],
COUNT(id) as [ids],
min(case when id is not null then [date] end) as [x]
FROM Table
GROUP BY email
ORDER by MIN([date])

关于sql - 如何将条件传递给 SQL 中的 MINI 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17090112/

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