在SQL中将行值更改为列

时间:2017-03-01 15:33:13

标签: sql pivot

我在sql中有表我希望将fieldColumnName更改为列,将fieldValue更改为行。 这是我的表格图片

Table Image

2 个答案:

答案 0 :(得分:0)

根据您的问题,您想要更改表格(更改列名称和数据类型)

-- check for sql injection
declare @sql nvarchar(max)
set @sql = N'My fancy sql query; truncate table dbo.VeryImportantTable'
IF CHARINDEX(';', ISNULL(@sql,'')) != 0 OR CHARINDEX('--', ISNULL(@sql,'')) != 0
BEGIN
 RAISERROR('Invalid input parameter', 16, 1)
 RETURN -1
END 

在上面的查询中,您可以根据需要更改数据类型。

答案 1 :(得分:0)

如果您知道fieldColumnName列中的所有可能值,那么您可以像这样使用pivot:

declare @data table(fieldValue varchar(50), fieldColumnName varchar(50))

INSERT INTO @data
SELECT '1 - value', 'col1'
UNION
SELECT '2 - value', 'col2'
UNION
SELECT NULL, 'col6'

select * 
from @data

select col1, col2, col3
from
(
  select fieldValue, fieldColumnName
  from @data
) d
pivot
(
  max(fieldValue)
  for fieldColumnName in (col1, col2, col3)
) piv;