假设我想选择不同的Email列,但我也希望该行中的其他列存储在我的对象中。这就是我得到的
SELECT DISTINCT NLMember2.Email
INTO holddups99
FROM NLMember2, holdkey0
WHERE NLMember2.Email = holdkey0.Email
上述查询有效,但只存储电子邮件列。我想用DISTINCT电子邮件条件存储所有列。
我已经被困了一段时间了。
干杯
EDITED
为了进一步澄清,我在NLMember2中获得了ID,电子邮件,姓名,地址..... 我只想将重复的电子邮件存储到holddups99中,但也有其他列,即ID,Name,Address,.....来自NLMember2
答案 0 :(得分:3)
因此,您希望按Email
进行分组,但是您需要告诉我们您希望如何聚合不属于group by子句的其他列。您可以采用最低(MIN)或最高(MAX)值或其他值。
另一种方法是在CTE中使用ROW_NUMBER
,我只选择每个电子邮件组的第一行:
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
在ROW_NUMBER
中修改顺序,以更改要采用的逻辑行。