SQL Server 存储过程 - 多字段分组示例:SP_Get_EOL
{ "title": "SQL Server 存储过程 - 多字段分组示例:SP_Get_EOL", "description": "本文介绍了如何在 SQL Server 中使用存储过程和 PIVOT 函数进行多字段分组,并提供了一个具体的示例存储过程 SP_Get_EOL 的代码实现。", "keywords": "SQL Server, 存储过程, PIVOT, 多字段分组, SP_Get_EOL", "content": ""CREATE PROCEDURE [dbo].SP_Get_EOL\n--\t@yyzx NVARCHAR(20), --营运中心\n--\t@pinhao NVARCHAR(128) --品号\nAS \nBEGIN\n\tSET NOCOUNT ON;\n\n\tDECLARE @DynamicPivotQuery AS NVARCHAR(MAX)\n\tDECLARE @ColumnName AS NVARCHAR(MAX)\n\n\t-- 获取所有需要分组的字段,并将其作为列名\n\tSELECT @ColumnName = COALESCE(@ColumnName + ', ', '') + QUOTENAME(FIELD_NAME)\n\tFROM Aras_PLM.innovator.EOL_INFO\n\tGROUP BY FIELD_NAME\n\n\t-- 构建动态SQL语句\n\tSET @DynamicPivotQuery = N'\n\tSELECT \n\tFROM (\n\t\tSELECT t1., t2.FIELD_NAME, t2.FIELD_VALUE\n\t\tFROM Aras_PLM.innovator.LABEL_AND_EOL t1\n\t\tLEFT JOIN Aras_PLM.innovator.EOL_INFO t2 ON t2.SOURCE_ID = t1.id\n\t\tWHERE t1.eol_state IN ('released', 'in change')\n\t\tAND t1.old_or_new_signs = '2'\n\t) AS SourceTable\n\tPIVOT (\n\t\tMAX(FIELD_VALUE)\n\t\tFOR FIELD_NAME IN (' + @ColumnName + ')\n\t) AS PivotTable'\n\n\t-- 执行动态SQL语句\n\tEXECUTE sp_executesql @DynamicPivotQuery\nEND\n\n在这个存储过程中,首先使用COALESCE函数和QUOTENAME函数来获取所有需要分组的字段,并将其作为列名。然后,使用动态SQL语句构建了一个PIVOT查询,将每个字段的值作为列,并将其分组。最后,通过EXECUTE sp_executesql语句执行动态SQL语句。\n\n请注意,上述代码中的查询语句和表名是示例代码,如果要使用该存储过程,请根据实际情况修改为正确的表名和字段名。"\n
原文地址: https://www.cveoy.top/t/topic/p3hp 著作权归作者所有。请勿转载和采集!