Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于一个列表从另一个表中查找值。Pivot_C#_Sql_Asp.net_Group By_Pivot - Fatal编程技术网

C# 基于一个列表从另一个表中查找值。Pivot

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_master-列:BuildingCode,Building Name

楼层主控-列:楼层代码、楼层名称、建筑代码

Room_Master-列:RoomCode、RoomName、RoomFloor、RoomBuilding

当我从Building_master table中选择Building Name时,我想填充GridView,输出如下所示

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