使用SQL查询时,我需要在结果中包括空白行,以使每组(family_id)等于4行
(family_id)
SELECT ROW_NUMBER() OVER(PARTITION BY family_id ORDER BY family_id) AS rowNum, full_name as name, family_id FROM tbl_person
只需定义第二个查询即可构建所需的空行并将它们合并在一起。
SELECT ROW_NUMBER() OVER(PARTITION BY family_id ORDER BY family_id) AS rowNum, full_name as name, family_id FROM tbl_person UNION ALL SELECT n.N AS rowNum, NULL AS name, p.family_id FROM (SELECT family_id, COUNT(*) family_count FROM tbl_person group by family_id) p INNER JOIN ( SELECT 1 AS N UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 ) n ON n.n > p.family_count ORDER BY family_id, rowNum, name;