如何在SQL Server中实现数据列组合?附具体需求示例
在SQL Server中获取指定列组合的结果
你需要的是将现有表中的列按两种指定组合提取并合并成一个结果集对吧?这里有两种实用的实现方式,根据你是否需要去重选择即可:
方式一:用UNION ALL保留所有行(含重复项)
如果希望保留所有符合条件的行,哪怕存在重复的组合结果,UNION ALL是更高效的选择——它不会额外做去重校验:
-- 第一种组合:XPO GL_CODE + XPO GL_NAME + PCARD CHART_OF_CODE SELECT [XPO GL_CODE] AS Code, [XPO GL_NAME] AS Name, [PCARD CHART_OF_CODE] AS ChartCode FROM YourActualTableName UNION ALL -- 第二种组合:XPO GL_CODE + PCARD GL_NAME + PCARD CHART_OF_CODE SELECT [XPO GL_CODE] AS Code, [PCARD GL_NAME] AS Name, [PCARD CHART_OF_CODE] AS ChartCode FROM YourActualTableName
方式二:用UNION自动去重
如果你的数据可能出现重复的组合结果,且希望最终结果里没有重复行,可以用UNION——它会自动对合并后的结果集去重,不过性能会比UNION ALL稍差一些:
SELECT [XPO GL_CODE] AS Code, [XPO GL_NAME] AS Name, [PCARD CHART_OF_CODE] AS ChartCode FROM YourActualTableName UNION SELECT [XPO GL_CODE] AS Code, [PCARD GL_NAME] AS Name, [PCARD CHART_OF_CODE] AS ChartCode FROM YourActualTableName
关键注意点
- 记得把
YourActualTableName替换成你实际使用的表名; - 因为列名包含空格,必须用方括号
[]包裹列名,SQL Server才能正确识别; - 两种查询返回的列数、对应列的数据类型必须完全一致,所以我们给对应列设置了相同的别名(
Code、Name、ChartCode),避免合并时出错。
内容的提问来源于stack exchange,提问作者mac phadale
相关产品推荐
相关产品推荐

