给定这种表结构,我想弄平多对多关系,并将一个表的“名称”字段中的值转换为列标题,并将同一表中的数量转换为列值。当前可行的想法是将值放入Dictionary(哈希表)中并以代码表示此数据,但我想知道是否存在SQL方式来执行此操作。我还将Linq- to-SQL用于数据访问,因此Linq-to-SQL解决方案将是理想的选择。
[TableA](整数ID)
[TableB](整数ID,字符串名称)
[TableAB](int tableAId,int tableBId,int数量)
fk:TableA.Id加入TableAB.tableAId
fk:TableB.Id加入TableAB.tableBId
有没有一种方法可以查询三个表并返回一个结果,例如:
TableA [Id] 1 TableB [Id], [Name] 1, "Red" 2, "Green" 3, "Blue" TableAB [TableAId], [TableBId], [Quantity] 1 1 5 1 2 6 1 3 7 Query Result: [TableA.Id], [Red], [Green], [Blue] 1, 5, 6, 7
对于TSQL解决方案,请使用PIVOT。
PIVOT
有关LINQ解决方案,请参见167304。