tinker Asked: 2016-08-12 20:22:38 +0800 CST2016-08-12 20:22:38 +0800 CST 2016-08-12 20:22:38 +0800 CST 使用 SQL 查询添加额外的行 772 SELECT distinct [product_group] ,[product_type_name] FROM [Yield_Reporting].[dbo].[d_product] 对于每个 product_group 条目,我都希望有另一个 product_type_name = AllType 所以结果表应该是这样的, 我无法弄清楚如何使用 SQL 查询得出该结果。 sql-server ssms 3 个回答 Voted Best Answer Arulkumar 2016-08-12T22:21:40+08:002016-08-12T22:21:40+08:00 AllType您可以对值的字符串进行硬编码,product_type_name并 UNION使用您现有的DISTINCT值来获得预期的结果。 使用给定示例数据的工作演示: DECLARE @d_product TABLE (product_group VARCHAR (200), product_type_name VARCHAR (200)); INSERT INTO @d_product( product_group, product_type_name) VALUES ('BARE_SILICON', 'BARE_SILICON'), ('Black_Mamba', 'Black_Mamba'), ('BURIN-IN_WAFER', 'BURIN-IN_WAFER'), ('CALVIN', 'CALVIN_BLK'); SELECT DISTINCT [product_group], [product_type_name] FROM @d_product UNION SELECT DISTINCT [product_group], 'AllType' FROM @d_product 输出: product_group product_type_name --------------------------------------- BARE_SILICON AllType BARE_SILICON BARE_SILICON Black_Mamba AllType Black_Mamba Black_Mamba BURIN-IN_WAFER AllType BURIN-IN_WAFER BURIN-IN_WAFER CALVIN AllType CALVIN CALVIN_BLK Lennart - Slava Ukraini 2016-08-12T21:18:59+08:002016-08-12T21:18:59+08:00 只需使用一个常量 SELECT distinct [product_group] , 'Alltype' FROM [Yield_Reporting].[dbo].[d_product] wBob 2016-08-13T00:25:03+08:002016-08-13T00:25:03+08:00 您也可以使用GROUPING SETS执行此操作,例如 SELECT [product_group], ISNULL( [product_type_name] , 'AllType' ) product_group FROM @d_product GROUP BY GROUPING SETS ( ( product_group, [product_type_name] ), product_group ) 这导致只有一次表/索引扫描,而不是 所需的两次UNION,尽管我在性能测试中没有看到太大差异。感谢@Arulkumar 提供我用于此示例的 DDL/DML。
AllType
您可以对值的字符串进行硬编码,product_type_name
并UNION
使用您现有的DISTINCT
值来获得预期的结果。使用给定示例数据的工作演示:
输出:
只需使用一个常量
您也可以使用GROUPING SETS执行此操作,例如
这导致只有一次表/索引扫描,而不是 所需的两次
UNION
,尽管我在性能测试中没有看到太大差异。感谢@Arulkumar 提供我用于此示例的 DDL/DML。