的部分,下面的表結構:列名和旋轉表
'----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