1

我知道您可以删除一列来隐藏它,但是聚合或函数呢?

SELECT MIN([date])AS FIRSTDAY,lastName,firstName,birthdate,gender
FROM [Day] d
GROUP BY lastName,firstName,birthdate,gender
4

2 回答 2

1

带有子查询!

SELECT x.LastName,
       x.firstName,
       x.birthdate,
       x.gender
FROM (SELECT MIN([date])AS FIRSTDAY,lastName,firstName,birthdate,gender
      FROM [Day] d
      GROUP BY lastName,firstName,birthdate,gender) AS x
于 2014-05-19T14:49:14.383 回答
0

使用 CTE。添加更多逻辑要容易得多,例如ORDER BYWHERE

WITH MinDate AS
(
     SELECT MIN([date])AS FIRSTDAY, lastName,firstName,birthdate,gender
     FROM [Day] 
     GROUP BY lastName,firstName,birthdate,gender
)
SELECT lastName,firstName,birthdate,gender
FROM MinDate
-- WHERE
-- ORDER BY

如果您只想按姓氏、名字、出生日期、性别删除重复项,请在日期不是重复值时使用子查询。这样,您可以将重复删除逻辑与表示分离。

SELECT D1.lastName, D1.firstName, D1.birthdate, D1.gender, -- More fields
FROM [Day] D1
WHERE D1.date = (
    SELECT MIN(D2.date) AS MinDate
    FROM D2 
    WHERE CHECKSUM(D1.lastName, D1.firstName, D1.birthdate, D1.gender) 
        = CHECKSUM(D2.lastName, D2.firstName, D2.birthdate, D2.gender)
)

这是你的选择。

于 2014-05-19T15:17:52.097 回答