C# 如何在SQL或EF中将列转换为行
我有一个SQL表的列表,该列表可以更改,我想将其转换并保存到一个带有2个fieldsName和Value的c列表中 例如:表AddressesId int、DocId int、Type int、StreetName varchar、StreetNo int-其他表将具有其他数据类型C# 如何在SQL或EF中将列转换为行,c#,sql,entity-framework,transpose,C#,Sql,Entity Framework,Transpose,我有一个SQL表的列表,该列表可以更改,我想将其转换并保存到一个带有2个fieldsName和Value的c列表中 例如:表AddressesId int、DocId int、Type int、StreetName varchar、StreetNo int-其他表将具有其他数据类型 SELECT Id , DocId, Type , StreetName , StreetNo FROM Addresses WHERE DocId = 2 这将导致我要转置的多个记录。 问题1:在转置表格时,最好
SELECT Id , DocId, Type , StreetName , StreetNo FROM Addresses WHERE DocId = 2
这将导致我要转置的多个记录。
问题1:在转置表格时,最好的方法是什么
1.SQL转置。列需要转换为cast,但为了便于阅读:
SELECT Field, Value FROM
( SELECT Id, DocId, Type, StreetName, StreetNo FROM Addresses WHERE DocId = 2) p
UNPIVOT
(Value FOR Field IN (Id, DocId, Type, StreetName, StreetNo)) AS unpvt
二,。C转置。这些桌子未经翻译
foreach (string tb in Tables)
{
var results = context.Database.SqlQuery("SELECT * FROM "+ tb +" WHERE DocId = 2");
//Transpose results.
}
创建表
创建表格yourtable
[Country_Code]varchar3[1960]varchar4[1961]varchar4[1962]varchar4[2011]varchar4
;
插入到您的表中
[国家代码],[1960],[1961],[1962],[2011]
价值观
‘IND’、‘va11’、‘va12’、‘va13’、‘va1x’,
‘AUS’、‘va21’、‘va22’、‘va23’、‘va2x’,
‘ENG’、‘va31’、‘va32’、‘va33’、‘va3x’
;
使用unpivot将列转换为行
选择国家/地区代码、年份、值
从你的桌子上
unpivot
价值
年[1960]、[1961]、[1962]、[2011]
u
您可以从下面的链接看到演示