グループの列ごとに最後の非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; 列の最後のnull以外の値を取得し、val1でval2グループ化catおよび順序付けしたいのtですが。私が求めている結果は cat val1 val2 A 1 P B 10 C 私が来た最も近いものは、順序付けられた最後の非null値が必要なので、機能しないものLAST_VALUEを無視しながら使用してORDER BYいます。 SELECT DISTINCT cat, LAST_VALUE(val1) OVER(PARTITION BY cat ORDER BY (SELECT NULL) ) AS val1, …