SQL 服务器:从输出的特定列中过滤掉重复值
SQL Server: Filter out duplicate value from a specific column of the output
我正在使用 SQL Server 2014,我有以下针对视图运行的查询 Table:
USE MyDatabase
SELECT a.ResaId, a.MTH, a.Market, SUM(a.Guest) AS 'Pax'
FROM RESLIST a
GROUP BY a.ResaId, a.MTH, a.Market
输出(摘录)如下:
ResaId MTH Market Pax
252 Jan-15 France 3
346 FEB-15 UK 2
346 MAR-15 UK 2
112 MAR-15 GERMANY 4
587 JUL-15 Italy 3
587 AUG-15 Italy 3
我需要在输出中排除这两个重复的 ResaID:346 和 587。因此,输出需要如下所示:
ResaId MTH Market Pax
252 Jan-15 France 3
346 FEB-15 UK 2
112 MAR-15 GERMANY 4
587 JUL-15 Italy 3
SELECT DISTINCT 语法无效。我猜是因为整个ROWS中的值不重复。
我只需要删除具有重复 ResaID 的第二行。
如何将相关语法写入现有查询以实现此目的?
你可以像
一样使用ROW_NUMBER()
函数
SELECT
ResaId,
MTH,
Market,
Pax
FROM
(SELECT
a.ResaId, a.MTH, a.Market, SUM(a.Guest) AS 'Pax',
ROW_NUMBER() OVER(PARTITION BY a.ResaId ORDER BY a.ResaId) AS rn
FROM
RESLIST a
GROUP BY
a.ResaId, a.MTH, a.Market) xx
WHERE
rn = 1;
我正在使用 SQL Server 2014,我有以下针对视图运行的查询 Table:
USE MyDatabase
SELECT a.ResaId, a.MTH, a.Market, SUM(a.Guest) AS 'Pax'
FROM RESLIST a
GROUP BY a.ResaId, a.MTH, a.Market
输出(摘录)如下:
ResaId MTH Market Pax
252 Jan-15 France 3
346 FEB-15 UK 2
346 MAR-15 UK 2
112 MAR-15 GERMANY 4
587 JUL-15 Italy 3
587 AUG-15 Italy 3
我需要在输出中排除这两个重复的 ResaID:346 和 587。因此,输出需要如下所示:
ResaId MTH Market Pax
252 Jan-15 France 3
346 FEB-15 UK 2
112 MAR-15 GERMANY 4
587 JUL-15 Italy 3
SELECT DISTINCT 语法无效。我猜是因为整个ROWS中的值不重复。
我只需要删除具有重复 ResaID 的第二行。
如何将相关语法写入现有查询以实现此目的?
你可以像
一样使用ROW_NUMBER()
函数
SELECT
ResaId,
MTH,
Market,
Pax
FROM
(SELECT
a.ResaId, a.MTH, a.Market, SUM(a.Guest) AS 'Pax',
ROW_NUMBER() OVER(PARTITION BY a.ResaId ORDER BY a.ResaId) AS rn
FROM
RESLIST a
GROUP BY
a.ResaId, a.MTH, a.Market) xx
WHERE
rn = 1;