sqlsever 列转行改名
时间: 2023-12-07 21:05:52 浏览: 175
以下是将SQL Server中的列转行并更改名称的方法:
1. 首先,创建一个存储过程并将其命名为ColumnIp。
2. 在存储过程中,声明变量@sql_str,@sql_col,@sql_where和@tableName,分别用于存储SQL语句的字符串,列名的字符串,WHERE子句的字符串和表名。
3. 声明变量@groupColumn,@row2column和@row2columnValue,分别用于存储分组字段,行变列的字段和行变列值的字段。
4. 设置@tableName,@groupColumn,@row2column和@row2columnValue的值。
5. 设置@sql_where的值。
6. 使用动态SQL语句将行转换为列,并将结果存储在@sql_col中。
7. 使用动态SQL语句将@sql_col中的列名更改为所需的名称,并将结果存储在@sql_str中。
8. 执行@sql_str。
以下是示例代码:
```sql
CREATE PROCEDURE ColumnIp
AS
BEGIN
DECLARE @sql_str NVARCHAR(MAX)
DECLARE @sql_col NVARCHAR(MAX)
DECLARE @sql_where NVARCHAR(MAX)
DECLARE @tableName SYSNAME
DECLARE @groupColumn SYSNAME
DECLARE @row2column SYSNAME
DECLARE @row2columnValue SYSNAME
SET @tableName = 'ColumnIpParameter'
SET @groupColumn = 'Columnlp_typeid'
SET @row2column = 'Columnlp_Listing'
SET @row2columnValue = 'Columnlp_port'
SET @sql_where = 'WHERE ' + @groupColumn + ' = 1'
SET @sql_col = 'SELECT ' + @row2column + ', ' + @row2columnValue + ' FROM ' + @tableName + ' ' + @sql_where
SET @sql_str = 'SELECT ' + @row2column + ', ' + @row2columnValue + ' AS NewColumnName FROM (' + @sql_col + ') AS SourceTable PIVOT(MAX(' + @row2columnValue + ') FOR ' + @row2column + ' IN ([NewColumnName])) AS PivotTable'
EXEC sp_executesql @sql_str
END
```
阅读全文