C# 基于一个列表从另一个表中查找值。Pivot
需要帮助 我有三张桌子 Building_master-列:BuildingCode,Building Name 楼层主控-列:楼层代码、楼层名称、建筑代码 Room_Master-列:RoomCode、RoomName、RoomFloor、RoomBuilding 当我从Building_master table中选择Building Name时,我想填充GridView,输出如下所示C# 基于一个列表从另一个表中查找值。Pivot,c#,sql,asp.net,group-by,pivot,C#,Sql,Asp.net,Group By,Pivot,需要帮助 我有三张桌子 Building_master-列:BuildingCode,Building Name 楼层主控-列:楼层代码、楼层名称、建筑代码 Room_Master-列:RoomCode、RoomName、RoomFloor、RoomBuilding 当我从Building_master table中选择Building Name时,我想填充GridView,输出如下所示 Building Name: A Floor 1 Room 101
Building Name: A
Floor
1 Room 101 Room 102 Room 103 Room 104
2 Room 201 Room 202 Room 203
3 Room 301 Room 302 Room 303 Room 304
请帮助为所需输出创建SQL查询以固定的列数(即每层的最大房间数)为轴心,您可以加入,然后使用窗口函数和条件聚合:
select
building_name,
floor_name,
max(case when rn = 1 then room_name end) room1,
max(case when rn = 2 then room_name end) room2,
max(case when rn = 3 then room_name end) room3
from (
select
b.building_code,
b.building_name,
f.floor_code,
f.floor_name,
r.room_name,
row_number() over(
partition by b.building_code, f.floor_code order by r.room_code
) rn
from building_master b
inner join floor_master f
on f.building_code = b.building_code
inner join room_master r
on r.room_floor = f.floor_code
and r.room_building = b.building_code
) t
group by b.building_code, b.building_name, f.floor_code, f.floor_name
我不得不对您的模式中的关系进行一些猜测,您可能需要进行检查
通过向外部选择添加更多max表达式,可以按楼层处理更多房间。楼层主控和房间主控之间的关系是什么?我想在Building_master和Floor_master之间是Building code.FloorCode和room master中的Building code OK,检查@GMB Response。我已经尝试过这个方法,但它不起作用,请帮助选择b002,f002,rn=1时的maxcase,然后从选择b.b002,b.b003,f.f002,f.f003中选择roo2 end415,rn=2时的maxcase,然后选择roo2 end416,b.f002分区上的行号,f.f002 r.r002 rn从建筑上的命令,f.f006=b.b002内部连接室上的主控f,r.r004=f.f002和r.r008=b.b002,b.b003,f.f002,f.F003实际数据库字段如下表所示:建筑主控建筑代码:b002,建筑名称:b003楼层主控:楼层代码:f002,楼层名称:f002建筑代码:f006和房间主控:房间代码:r002,房间名称:r003,房间楼层:r004和建筑代码:r008