如何在select语句中包含另一列而不将其作为distinct的一部分?我试图在distinct之前设置另一个列名,但是没有用。
SELECT distinct nm.LeadConsumerId, nm.LeadMetaInfoId
FROM [MyDatabase].[dbo].[LeadConsumer] as lc
inner join [dbo].[LeadNMConsumer] as nm on lc.ID = nm.LeadConsumerId
inner join [dbo].BrokerHistories as his on nm.LeadConsumerId = his.LeadConsumerId
where (his.EventType = 0 Or his.EventType = 1)
AND his.EventDate >= Convert(datetime, '2016-05-01') AND his.EventDate <= Convert(datetime, '2016-05-31')
答案 0 :(得分:0)
您可以使用ROW_NUMBER
:
WITH CTE AS(
SELECT
nm.LeadConsumerId,
nm.LeadMetaInfoId,
-- other columns you want
ROW_NUMBER()OVER (PARTITION BY nm.LeadConsumerId, nm.LeadMetaInfoId ORDER BY (SELECT NULL))
FROM [MyDatabase].[dbo].[LeadConsumer] AS lc
INNER JOIN [dbo].[LeadNMConsumer] AS nm
ON lc.ID = nm.LeadConsumerId
INNER JOIN [dbo].BrokerHistories AS his
ON nm.LeadConsumerId = his.LeadConsumerId
WHERE
(his.EventType = 0 OR his.EventType = 1)
AND his.EventDate >= CONVERT(datetime, '2016-05-01')
AND his.EventDate <= CONVERT(datetime, '2016-05-31')
)
SELECT
--list all columns you want
FROM CTE
WHERE rn = 1
将(SELECT NULL)
替换为ORDER BY
子句作为首选。