0

假设我想选择不同的电子邮件列,但我还希望该行中的其他列存储在我的对象中。这就是我得到的

SELECT DISTINCT NLMember2.Email
INTO holddups99
FROM NLMember2, holdkey0
WHERE NLMember2.Email = holdkey0.Email

上面的查询有效,但是它只存储电子邮件列。我想使用 DISTINCT 电子邮件条件存储所有列。

我已经被困了一段时间了。

干杯

已编辑

为了进一步澄清,我在 NLMember2 中得到了 ID、电子邮件、姓名、地址......来自 NLMember2

4

1 回答 1

3

所以你想要 group by Email,但是你需要告诉我们你想如何聚合不属于 group by 子句的其他列。您可以采用最低(MIN)或最高(MAX)值或其他值。

另一种方法是ROW_NUMBER在 CTE 中使用,我只选择每个电子邮件组的第一行:

WITH CTE AS
(
    SELECT nl.Email, OtherColumns, ... ,
        RN = ROW_NUMBER() OVER (PARTITION BY Email ORDER BY Email ASC)
    FROM dbo.NLMember2 nl INNER JOIN dbo.holdkey0 hk
        ON nl.Email = hk.Email 
)
SELECT * FROM CTE WHERE RN = 1

修改 order byROW_NUMBER以更改要取的行的逻辑。

于 2013-11-07T13:02:12.373 回答