【发布时间】:2013-06-10 00:26:19
【问题描述】:
我有一个包含以下列的表格
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(date),如果它们有任何非空 id 的条目
如果没有 id,有什么方法可以使 MIN(date) 无效?我正在研究一个解决方案,如果 id 为 0 并获得这个的最小值,则将大量天数添加到 date,但似乎必须有更聪明的方法?
【问题讨论】:
标签: sql sql-server tsql min