public DataTable ReportAmenities(string flight_num) { Connection objDAL = new Connection(); //lấy ra danh sách các dịch vụ DataTable list_amenity = objDAL.GetDataInfo("SELECT Amenities.AmenService FROM Amenities"); //bảng lưu thông tin đầy đủ của cách dịch vụ theo cabin (giá trị null tức khoang đó không có sẵn dịch vụ) DataTable amen_by_cabin = new DataTable(); //đặt tên cho header column là tên các dịch vụ for (int i = 0; i < list_amenity.Rows.Count; i++) { amen_by_cabin.Columns.Add(list_amenity.Rows[i]["AmenService"].ToString()); } Connection objDAL1 = new Connection(); DataTable list_cabin = objDAL1.GetDataInfo("SELECT ID FROM CabinTypes"); //lấy ra dữ liệu của các dịch vụ theo từng cabin 1 //mã cabin được lấy ra từ list_cabin for (int i = 0; i < list_cabin.Rows.Count; i++) { //bảng dịch vụ dưới dạng cột định dạng thành list và đổ vào datatable kết quả theo hàng (cột -> hàng) List <string> temp = objDAL.GetListDataInt("SELECT ISNULL(S.SOLUONG, 0 ) FROM Amenities LEFT JOIN (SELECT AmenitiesTickets.AmenitiesID, Tickets.CabinType, COUNT(*) AS SOLUONG FROM AmenitiesTickets INNER JOIN Tickets ON AmenitiesTickets.TicketID = Tickets.ID LEFT JOIN Schedules ON Tickets.ScheduleID = Schedules.ID WHERE Tickets.CabinType = '" + list_cabin.Rows[i]["ID"].ToString() + "' AND Schedules.FlightNumber = '" + flight_num + "' GROUP BY AmenitiesTickets.AmenitiesID, Tickets.CabinType) S ON Amenities.ID = S.AmenitiesID"); amen_by_cabin.Rows.Add(temp.ToArray <string>()); } return(amen_by_cabin); }