如何选择组中每列的最后一个非NULL值集?
我正在使用SQL Server 2016,并且正在使用的数据具有以下形式。 CREATE TABLE #tab (cat CHAR(1), t CHAR(2), val1 INT, val2 CHAR(1)); INSERT INTO #tab VALUES ('A','Q1',2,NULL),('A','Q2',NULL,'P'),('A','Q3',1,NULL),('A','Q3',NULL,NULL), ('B','Q1',5,NULL),('B','Q2',NULL,'P'),('B','Q3',NULL,'C'),('B','Q3',10,NULL); SELECT * FROM #tab; 我想要获取列上最后的非空值,val1并按进行val2分组cat和排序t。我正在寻找的结果是 cat val1 val2 A 1 P B 10 C 我所使用的最接近的是正在使用的,LAST_VALUE而忽略了ORDER BY那将不起作用,因为我需要排序的最后一个非空值。 SELECT DISTINCT cat, LAST_VALUE(val1) OVER(PARTITION BY cat ORDER BY (SELECT NULL) ) AS val1, …