的部分,下面的表结构:列名和旋转表
'----ID-----'----NAME----'----FIELD1----'----FIELD2----'
' 1 ' val ' 123 ' 321 '
' 2 ' val2 ' 234 ' 212 '
需要得到以下结果:
'----ID-----'----NAME----'----FIELDS----'----VALUES----'
' 1 ' val ' FIELD1 ' 123 '
' 1 ' val ' FIELD2 ' 321 '
' 2 ' val2 ' FIELD1 ' 234 '
' 2 ' val2 ' FIELD2 ' 212 '
如何写这个查询?我可以从INFORMATION_SCHEMA.COLUMNS
获取列名。但如何与INFORMATION_SCHEMA.COLUMNS
连接表?另外如何旋转一部分表格?
作为生活的例子。以下是表:
在截图只是几个字段,但表有很多领域。我写了下面的查询:
Select p.GUID, p.myvalues, p.Fields
from myTable gz
unpivot([myvalues] for Fields in ([area], [davlplastmax])) p
但是这个查询不返回空值。
此外,我想从INFORMATION_SCHEMA.COLUMNS
获得专栏,并通过([area], [davlplastmax])
过去。
例如:
unpivot([values] for Fields in (
SELECT [MyDb].INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME
FROM [MyDb].INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'MyTable'
)
越来越列您可以使用CASE或UNPIVOT语句。 –
因为一些人已经回答,UNPIVOT似乎是要走的路。问题:为什么你想加入到'INFORMATION_SCHEMA.COLUMNS'? – Eli