也许是这样的?
SELECT CONCAT_WS(', ', MAX(NULLIF(Ethnicity, 'Unknown')), MAX(NULLIF(gender, 'Unknown')), MAX(NULLIF(age, 'Unknown')))
, Date, ID
FROM (
VALUES (N'2021-03-25', N'001', NULL, NULL, 39)
, (N'2021-03-25', N'001', N'Hispanic', N'Male', 39)
, (N'2022-02-01', N'002', NULL, NULL, NULL)
, (N'2022-02-01', N'002', N'Unknown', N'Male', 27)
, (N'2022-02-01', N'002', N'Hispanic', N'Male', 27)
, (N'2022-02-01', N'002', NULL, N'Male', NULL)
, (N'2022-02-02', N'003', NULL, N'Male', NULL)
, (N'2022-02-02', N'003', N'White', N'Male', NULL)
) t (Date,Id,Ethnicity,Gender,Age)
GROUP BY date,id
这会对日期进行分组,并取每个值的最大值,同时过滤掉未知值/null值。当然,如果有几个非空值,这可能会返回不正确的数字,但您需要更新问题的更多细节。
如果没有CONCAT_WS,则可以使用具有类似效果的CONCAT。