另一種方法,在這裏你必須對所有列轉換成一個類型,例如我int轉換爲VARCHAR(50),在我的表中的所有其他列都是VARCHAR(50 )eather:
SELECT TAB.name TableName,
TAB.object_id ObjectId,
COL.name ColumnName,
COL.column_id ColumnId,
U.ColumnValue TableValue,
T.name TableType
FROM sys.tables TAB
INNER JOIN SYS.columns COL
ON TAB.object_id = COL.object_id
INNER JOIN sys.types T
ON T.user_type_id = COL.system_type_id
INNER JOIN (
SELECT ColumnName, ColumnValue
FROM (SELECT CONVERT(varchar(50),PK) as PK , LastName, Name, [Address]
--here to convert all in one type
FROM Clients)
AS P
UNPIVOT
(
ColumnValue FOR ColumnName IN (PK, LastName, Name, [Address])
) as unpvt
) as U
ON U.ColumnName = COL.name
WHERE TAB.object_id = 25659888;
輸出:
TableName ObjectId ColumnName ColumnId TableValue TableType
Clients 25659888 PK 1 1 int
Clients 25659888 LastName 2 Vidal varchar
Clients 25659888 Name 3 Arturo varchar
Clients 25659888 Address 4 St.... varchar
Clients 25659888 PK 1 2 int
Clients 25659888 LastName 2 Lavezzi varchar
Clients 25659888 Name 3 Ezequiel varchar
Clients 25659888 Address 4 St.... varchar
Clients 25659888 PK 1 3 int
Clients 25659888 LastName 2 Cuadrado varchar
Clients 25659888 Name 3 Guillermo varchar
Clients 25659888 Address 4 St.... varchar
請你解釋一下多一點的輸出? – TheGameiswar