Sql 按最新日期每月选择1条不同的记录
我有一个如下所示的数据列表:Sql 按最新日期每月选择1条不同的记录,sql,sql-server,Sql,Sql Server,我有一个如下所示的数据列表: Name Date Weight Person 1 01/01/2014 89KG Person 2 01/01/2014 62KG Person 1 07/01/2014 88KG Person 2 07/01/2014 62KG Person 1 21/01/2014 85KG Person 2 21/01/2014
Name Date Weight
Person 1 01/01/2014 89KG
Person 2 01/01/2014 62KG
Person 1 07/01/2014 88KG
Person 2 07/01/2014 62KG
Person 1 21/01/2014 85KG
Person 2 21/01/2014 63KG
我想做的是只选择具有不同名称的记录,这些记录是给定月份的最新日期。因此,对于本例,我只想选择2014年1月21日的人员1和人员2记录(因为这是最新日期)。我使用的是SQL 2008。请尝试使用
DENSE\u-RANK
:
select
*
From (
select
*,
DENSE_RANK() over(PARTITION BY YEAR([Date]),
MONTH([Date])
ORDER BY [Date] desc) Rnk
From tbl
)x where Rnk=1
请尝试使用
densite\u-RANK
:
select
*
From (
select
*,
DENSE_RANK() over(PARTITION BY YEAR([Date]),
MONTH([Date])
ORDER BY [Date] desc) Rnk
From tbl
)x where Rnk=1
请尝试使用
densite\u-RANK
:
select
*
From (
select
*,
DENSE_RANK() over(PARTITION BY YEAR([Date]),
MONTH([Date])
ORDER BY [Date] desc) Rnk
From tbl
)x where Rnk=1
请尝试使用
densite\u-RANK
:
select
*
From (
select
*,
DENSE_RANK() over(PARTITION BY YEAR([Date]),
MONTH([Date])
ORDER BY [Date] desc) Rnk
From tbl
)x where Rnk=1
请看看这是否适合你 样本数据:
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
CREATE TABLE #TEMP(Name VARCHAR(20),
WDate VARCHAR(20),
Weight VARCHAR(20))
INSERT INTO #TEMP
VALUES
('Person 1', '01/01/2014', '89KG'),
('Person 2', '01/01/2014', '62KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 2', '07/02/2014', '62KG'),
('Person 1', '21/01/2014', '85KG'),
('Person 2', '21/01/2014', '63KG');
;WITH cte_DateFormat
AS (
SELECT Name,
CONVERT(DATE, WDate, 103) AS WDate,
Weight
FROM #TEMP
)
, cte_Rank
AS (
SELECT ROW_NUMBER() OVER (PARTITION BY Name,
CAST(YEAR(WDate) AS VARCHAR(4)) + CAST(MONTH(WDate) AS VARCHAR(2)) ORDER BY WDate DESC) AS ID,
Name,
WDate,
Weight
FROM cte_DateFormat
)
SELECT Name,
WDate,
Weight
FROM cte_Rank
WHERE ID = 1
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
脚本:
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
CREATE TABLE #TEMP(Name VARCHAR(20),
WDate VARCHAR(20),
Weight VARCHAR(20))
INSERT INTO #TEMP
VALUES
('Person 1', '01/01/2014', '89KG'),
('Person 2', '01/01/2014', '62KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 2', '07/02/2014', '62KG'),
('Person 1', '21/01/2014', '85KG'),
('Person 2', '21/01/2014', '63KG');
;WITH cte_DateFormat
AS (
SELECT Name,
CONVERT(DATE, WDate, 103) AS WDate,
Weight
FROM #TEMP
)
, cte_Rank
AS (
SELECT ROW_NUMBER() OVER (PARTITION BY Name,
CAST(YEAR(WDate) AS VARCHAR(4)) + CAST(MONTH(WDate) AS VARCHAR(2)) ORDER BY WDate DESC) AS ID,
Name,
WDate,
Weight
FROM cte_DateFormat
)
SELECT Name,
WDate,
Weight
FROM cte_Rank
WHERE ID = 1
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
清理脚本:
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
CREATE TABLE #TEMP(Name VARCHAR(20),
WDate VARCHAR(20),
Weight VARCHAR(20))
INSERT INTO #TEMP
VALUES
('Person 1', '01/01/2014', '89KG'),
('Person 2', '01/01/2014', '62KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 2', '07/02/2014', '62KG'),
('Person 1', '21/01/2014', '85KG'),
('Person 2', '21/01/2014', '63KG');
;WITH cte_DateFormat
AS (
SELECT Name,
CONVERT(DATE, WDate, 103) AS WDate,
Weight
FROM #TEMP
)
, cte_Rank
AS (
SELECT ROW_NUMBER() OVER (PARTITION BY Name,
CAST(YEAR(WDate) AS VARCHAR(4)) + CAST(MONTH(WDate) AS VARCHAR(2)) ORDER BY WDate DESC) AS ID,
Name,
WDate,
Weight
FROM cte_DateFormat
)
SELECT Name,
WDate,
Weight
FROM cte_Rank
WHERE ID = 1
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
请看看这是否适合你 样本数据:
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
CREATE TABLE #TEMP(Name VARCHAR(20),
WDate VARCHAR(20),
Weight VARCHAR(20))
INSERT INTO #TEMP
VALUES
('Person 1', '01/01/2014', '89KG'),
('Person 2', '01/01/2014', '62KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 2', '07/02/2014', '62KG'),
('Person 1', '21/01/2014', '85KG'),
('Person 2', '21/01/2014', '63KG');
;WITH cte_DateFormat
AS (
SELECT Name,
CONVERT(DATE, WDate, 103) AS WDate,
Weight
FROM #TEMP
)
, cte_Rank
AS (
SELECT ROW_NUMBER() OVER (PARTITION BY Name,
CAST(YEAR(WDate) AS VARCHAR(4)) + CAST(MONTH(WDate) AS VARCHAR(2)) ORDER BY WDate DESC) AS ID,
Name,
WDate,
Weight
FROM cte_DateFormat
)
SELECT Name,
WDate,
Weight
FROM cte_Rank
WHERE ID = 1
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
脚本:
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
CREATE TABLE #TEMP(Name VARCHAR(20),
WDate VARCHAR(20),
Weight VARCHAR(20))
INSERT INTO #TEMP
VALUES
('Person 1', '01/01/2014', '89KG'),
('Person 2', '01/01/2014', '62KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 2', '07/02/2014', '62KG'),
('Person 1', '21/01/2014', '85KG'),
('Person 2', '21/01/2014', '63KG');
;WITH cte_DateFormat
AS (
SELECT Name,
CONVERT(DATE, WDate, 103) AS WDate,
Weight
FROM #TEMP
)
, cte_Rank
AS (
SELECT ROW_NUMBER() OVER (PARTITION BY Name,
CAST(YEAR(WDate) AS VARCHAR(4)) + CAST(MONTH(WDate) AS VARCHAR(2)) ORDER BY WDate DESC) AS ID,
Name,
WDate,
Weight
FROM cte_DateFormat
)
SELECT Name,
WDate,
Weight
FROM cte_Rank
WHERE ID = 1
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
清理脚本:
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
CREATE TABLE #TEMP(Name VARCHAR(20),
WDate VARCHAR(20),
Weight VARCHAR(20))
INSERT INTO #TEMP
VALUES
('Person 1', '01/01/2014', '89KG'),
('Person 2', '01/01/2014', '62KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 2', '07/02/2014', '62KG'),
('Person 1', '21/01/2014', '85KG'),
('Person 2', '21/01/2014', '63KG');
;WITH cte_DateFormat
AS (
SELECT Name,
CONVERT(DATE, WDate, 103) AS WDate,
Weight
FROM #TEMP
)
, cte_Rank
AS (
SELECT ROW_NUMBER() OVER (PARTITION BY Name,
CAST(YEAR(WDate) AS VARCHAR(4)) + CAST(MONTH(WDate) AS VARCHAR(2)) ORDER BY WDate DESC) AS ID,
Name,
WDate,
Weight
FROM cte_DateFormat
)
SELECT Name,
WDate,
Weight
FROM cte_Rank
WHERE ID = 1
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
请看看这是否适合你 样本数据:
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
CREATE TABLE #TEMP(Name VARCHAR(20),
WDate VARCHAR(20),
Weight VARCHAR(20))
INSERT INTO #TEMP
VALUES
('Person 1', '01/01/2014', '89KG'),
('Person 2', '01/01/2014', '62KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 2', '07/02/2014', '62KG'),
('Person 1', '21/01/2014', '85KG'),
('Person 2', '21/01/2014', '63KG');
;WITH cte_DateFormat
AS (
SELECT Name,
CONVERT(DATE, WDate, 103) AS WDate,
Weight
FROM #TEMP
)
, cte_Rank
AS (
SELECT ROW_NUMBER() OVER (PARTITION BY Name,
CAST(YEAR(WDate) AS VARCHAR(4)) + CAST(MONTH(WDate) AS VARCHAR(2)) ORDER BY WDate DESC) AS ID,
Name,
WDate,
Weight
FROM cte_DateFormat
)
SELECT Name,
WDate,
Weight
FROM cte_Rank
WHERE ID = 1
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
脚本:
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
CREATE TABLE #TEMP(Name VARCHAR(20),
WDate VARCHAR(20),
Weight VARCHAR(20))
INSERT INTO #TEMP
VALUES
('Person 1', '01/01/2014', '89KG'),
('Person 2', '01/01/2014', '62KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 2', '07/02/2014', '62KG'),
('Person 1', '21/01/2014', '85KG'),
('Person 2', '21/01/2014', '63KG');
;WITH cte_DateFormat
AS (
SELECT Name,
CONVERT(DATE, WDate, 103) AS WDate,
Weight
FROM #TEMP
)
, cte_Rank
AS (
SELECT ROW_NUMBER() OVER (PARTITION BY Name,
CAST(YEAR(WDate) AS VARCHAR(4)) + CAST(MONTH(WDate) AS VARCHAR(2)) ORDER BY WDate DESC) AS ID,
Name,
WDate,
Weight
FROM cte_DateFormat
)
SELECT Name,
WDate,
Weight
FROM cte_Rank
WHERE ID = 1
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
清理脚本:
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
CREATE TABLE #TEMP(Name VARCHAR(20),
WDate VARCHAR(20),
Weight VARCHAR(20))
INSERT INTO #TEMP
VALUES
('Person 1', '01/01/2014', '89KG'),
('Person 2', '01/01/2014', '62KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 2', '07/02/2014', '62KG'),
('Person 1', '21/01/2014', '85KG'),
('Person 2', '21/01/2014', '63KG');
;WITH cte_DateFormat
AS (
SELECT Name,
CONVERT(DATE, WDate, 103) AS WDate,
Weight
FROM #TEMP
)
, cte_Rank
AS (
SELECT ROW_NUMBER() OVER (PARTITION BY Name,
CAST(YEAR(WDate) AS VARCHAR(4)) + CAST(MONTH(WDate) AS VARCHAR(2)) ORDER BY WDate DESC) AS ID,
Name,
WDate,
Weight
FROM cte_DateFormat
)
SELECT Name,
WDate,
Weight
FROM cte_Rank
WHERE ID = 1
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
请看看这是否适合你 样本数据:
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
CREATE TABLE #TEMP(Name VARCHAR(20),
WDate VARCHAR(20),
Weight VARCHAR(20))
INSERT INTO #TEMP
VALUES
('Person 1', '01/01/2014', '89KG'),
('Person 2', '01/01/2014', '62KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 2', '07/02/2014', '62KG'),
('Person 1', '21/01/2014', '85KG'),
('Person 2', '21/01/2014', '63KG');
;WITH cte_DateFormat
AS (
SELECT Name,
CONVERT(DATE, WDate, 103) AS WDate,
Weight
FROM #TEMP
)
, cte_Rank
AS (
SELECT ROW_NUMBER() OVER (PARTITION BY Name,
CAST(YEAR(WDate) AS VARCHAR(4)) + CAST(MONTH(WDate) AS VARCHAR(2)) ORDER BY WDate DESC) AS ID,
Name,
WDate,
Weight
FROM cte_DateFormat
)
SELECT Name,
WDate,
Weight
FROM cte_Rank
WHERE ID = 1
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
脚本:
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
CREATE TABLE #TEMP(Name VARCHAR(20),
WDate VARCHAR(20),
Weight VARCHAR(20))
INSERT INTO #TEMP
VALUES
('Person 1', '01/01/2014', '89KG'),
('Person 2', '01/01/2014', '62KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 2', '07/02/2014', '62KG'),
('Person 1', '21/01/2014', '85KG'),
('Person 2', '21/01/2014', '63KG');
;WITH cte_DateFormat
AS (
SELECT Name,
CONVERT(DATE, WDate, 103) AS WDate,
Weight
FROM #TEMP
)
, cte_Rank
AS (
SELECT ROW_NUMBER() OVER (PARTITION BY Name,
CAST(YEAR(WDate) AS VARCHAR(4)) + CAST(MONTH(WDate) AS VARCHAR(2)) ORDER BY WDate DESC) AS ID,
Name,
WDate,
Weight
FROM cte_DateFormat
)
SELECT Name,
WDate,
Weight
FROM cte_Rank
WHERE ID = 1
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
清理脚本:
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
CREATE TABLE #TEMP(Name VARCHAR(20),
WDate VARCHAR(20),
Weight VARCHAR(20))
INSERT INTO #TEMP
VALUES
('Person 1', '01/01/2014', '89KG'),
('Person 2', '01/01/2014', '62KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 1', '07/01/2014', '88KG'),
('Person 2', '07/02/2014', '62KG'),
('Person 1', '21/01/2014', '85KG'),
('Person 2', '21/01/2014', '63KG');
;WITH cte_DateFormat
AS (
SELECT Name,
CONVERT(DATE, WDate, 103) AS WDate,
Weight
FROM #TEMP
)
, cte_Rank
AS (
SELECT ROW_NUMBER() OVER (PARTITION BY Name,
CAST(YEAR(WDate) AS VARCHAR(4)) + CAST(MONTH(WDate) AS VARCHAR(2)) ORDER BY WDate DESC) AS ID,
Name,
WDate,
Weight
FROM cte_DateFormat
)
SELECT Name,
WDate,
Weight
FROM cte_Rank
WHERE ID = 1
IF OBJECT_ID(N'tempdb..#TEMP') > 0
BEGIN
DROP TABLE #TEMP
END
使用行分区,这也会起作用:
SELECT Name, Date, Weight
FROM ( SELECT
Name,
Date,
Weight,
ROW_NUMBER() OVER ( PARTITION BY Name, MONTH(Date)
ORDER BY Date DESC) AS [RowNum]
FROM [YourTableHere]
) Tbl
WHERE Tbl.RowNum = 1
ORDER BY MONTH(Date), Name
测试脚本:
DECLARE @Table TABLE (Name VARCHAR(20), Date Date, Weight VARCHAR(20))
INSERT INTO @Table (Name, Date, Weight)
VALUES ('Person 1', '1/1/2014', '89KG'),
('Person 2', '1/1/2014', '62KG'),
('Person 1', '1/7/2014', '88KG'),
('Person 2', '1/7/2014', '62KG'),
('Person 1', '1/21/2014', '85KG'),
('Person 2', '1/21/2014', '63KG'),
('Person 1', '2/1/2014', '84KG'),
('Person 2', '2/1/2014', '61KG'),
('Person 1', '2/11/2014', '83KG'),
('Person 2', '2/11/2014', '60KG')
SELECT Name, Date, Weight
FROM ( SELECT
Name,
Date,
Weight,
ROW_NUMBER() OVER ( PARTITION BY Name, MONTH(Date)
ORDER BY Date DESC) AS [RowNum]
FROM @Table
) Tbl
WHERE Tbl.RowNum = 1
ORDER BY MONTH(Date), Name
使用行分区,这也会起作用:
SELECT Name, Date, Weight
FROM ( SELECT
Name,
Date,
Weight,
ROW_NUMBER() OVER ( PARTITION BY Name, MONTH(Date)
ORDER BY Date DESC) AS [RowNum]
FROM [YourTableHere]
) Tbl
WHERE Tbl.RowNum = 1
ORDER BY MONTH(Date), Name
测试脚本:
DECLARE @Table TABLE (Name VARCHAR(20), Date Date, Weight VARCHAR(20))
INSERT INTO @Table (Name, Date, Weight)
VALUES ('Person 1', '1/1/2014', '89KG'),
('Person 2', '1/1/2014', '62KG'),
('Person 1', '1/7/2014', '88KG'),
('Person 2', '1/7/2014', '62KG'),
('Person 1', '1/21/2014', '85KG'),
('Person 2', '1/21/2014', '63KG'),
('Person 1', '2/1/2014', '84KG'),
('Person 2', '2/1/2014', '61KG'),
('Person 1', '2/11/2014', '83KG'),
('Person 2', '2/11/2014', '60KG')
SELECT Name, Date, Weight
FROM ( SELECT
Name,
Date,
Weight,
ROW_NUMBER() OVER ( PARTITION BY Name, MONTH(Date)
ORDER BY Date DESC) AS [RowNum]
FROM @Table
) Tbl
WHERE Tbl.RowNum = 1
ORDER BY MONTH(Date), Name
使用行分区,这也会起作用:
SELECT Name, Date, Weight
FROM ( SELECT
Name,
Date,
Weight,
ROW_NUMBER() OVER ( PARTITION BY Name, MONTH(Date)
ORDER BY Date DESC) AS [RowNum]
FROM [YourTableHere]
) Tbl
WHERE Tbl.RowNum = 1
ORDER BY MONTH(Date), Name
测试脚本:
DECLARE @Table TABLE (Name VARCHAR(20), Date Date, Weight VARCHAR(20))
INSERT INTO @Table (Name, Date, Weight)
VALUES ('Person 1', '1/1/2014', '89KG'),
('Person 2', '1/1/2014', '62KG'),
('Person 1', '1/7/2014', '88KG'),
('Person 2', '1/7/2014', '62KG'),
('Person 1', '1/21/2014', '85KG'),
('Person 2', '1/21/2014', '63KG'),
('Person 1', '2/1/2014', '84KG'),
('Person 2', '2/1/2014', '61KG'),
('Person 1', '2/11/2014', '83KG'),
('Person 2', '2/11/2014', '60KG')
SELECT Name, Date, Weight
FROM ( SELECT
Name,
Date,
Weight,
ROW_NUMBER() OVER ( PARTITION BY Name, MONTH(Date)
ORDER BY Date DESC) AS [RowNum]
FROM @Table
) Tbl
WHERE Tbl.RowNum = 1
ORDER BY MONTH(Date), Name
使用行分区,这也会起作用:
SELECT Name, Date, Weight
FROM ( SELECT
Name,
Date,
Weight,
ROW_NUMBER() OVER ( PARTITION BY Name, MONTH(Date)
ORDER BY Date DESC) AS [RowNum]
FROM [YourTableHere]
) Tbl
WHERE Tbl.RowNum = 1
ORDER BY MONTH(Date), Name
测试脚本:
DECLARE @Table TABLE (Name VARCHAR(20), Date Date, Weight VARCHAR(20))
INSERT INTO @Table (Name, Date, Weight)
VALUES ('Person 1', '1/1/2014', '89KG'),
('Person 2', '1/1/2014', '62KG'),
('Person 1', '1/7/2014', '88KG'),
('Person 2', '1/7/2014', '62KG'),
('Person 1', '1/21/2014', '85KG'),
('Person 2', '1/21/2014', '63KG'),
('Person 1', '2/1/2014', '84KG'),
('Person 2', '2/1/2014', '61KG'),
('Person 1', '2/11/2014', '83KG'),
('Person 2', '2/11/2014', '60KG')
SELECT Name, Date, Weight
FROM ( SELECT
Name,
Date,
Weight,
ROW_NUMBER() OVER ( PARTITION BY Name, MONTH(Date)
ORDER BY Date DESC) AS [RowNum]
FROM @Table
) Tbl
WHERE Tbl.RowNum = 1
ORDER BY MONTH(Date), Name
它只返回最新的值。我需要每月返回最新的值。例如,在一年内,我希望返回1月、2月、3月、4月等的最新人均值,因此,如果我的数据集超过1年,则预期输出将为每人12条记录。因此,您需要在稠密_列中添加一个分区,请检查编辑后的答案。!也应该按年份划分吗?谢谢!但是,我们如何编辑此查询以选择每条记录的最新日期?每条记录可能有不同的最新日期。人员1的最晚日期可能是2001年24月,人员2的最晚日期可能是2007年26月。当前查询将只返回排名为1的Person 2的记录。@LiamF.O'Neill为此,您需要在
PARTITION BY
子句中添加Name
。该子句只返回最新的值。我需要每月返回最新的值。例如,在一年内,我希望返回1月、2月、3月、4月等的最新人均值,因此,如果我的数据集超过1年,则预期输出将为每人12条记录。因此,您需要在稠密_列中添加一个分区,请检查编辑后的答案。!也应该按年份划分吗?谢谢!但是,我们如何编辑此查询以选择每条记录的最新日期?每条记录可能有不同的最新日期。人员1的最晚日期可能是2001年24月,人员2的最晚日期可能是2007年26月。当前查询将只返回排名为1的Person 2的记录。@LiamF.O'Neill为此,您需要在PARTITION BY
子句中添加Name
。该子句只返回最新的值。我需要每月返回最新的值。例如,在一年内,我希望返回1月、2月、3月、4月等的最新人均值,因此,如果我的数据集超过1年,则预期输出将为每人12条记录。因此,您需要在稠密_列中添加一个分区,请检查编辑后的答案。!也应该按年份划分吗?谢谢!但是,我们如何编辑此查询以选择每条记录的最新日期?每条记录可能有不同的最新日期。人员1的最晚日期可能是2001年24月,人员2的最晚日期可能是2007年26月。当前查询将只返回排名为1的Person 2的记录。@LiamF.O'Neill为此,您需要在PARTITION BY
子句中添加Name
。该子句只返回最新的值。我需要每月返回最新的值。例如,在一年内,我希望返回1月、2月、3月、4月等的最新人均值,因此,如果我的数据集超过1年,则预期输出将为每人12条记录。因此,您需要在稠密_列中添加一个分区,请检查编辑后的答案。!也应该按年份划分吗?谢谢!但是,我们如何编辑此查询以选择每条记录的最新日期?每条记录可能有不同的最新日期。人员1的最晚日期可能是2001年24月,人员2的最晚日期可能是2007年26月。当前查询将只返回Person 2的记录,因为该记录的排名为1。@LiamF.O'Neill为此,您需要在PARTITION BY
子句中添加Name
。