0

我正在创建一个 asp.net 网络应用程序,其中包含一个用于学习的火车预订小型数据库。我只是在asp.net的学习阶段,所以请原谅我的错误。

情况:我有两个表第一个 Train_Details,列有 Train_No、1AC-Berths、2AC_Berths、3AC_Berths。我的第二个表是带有 Train_No、Class_Type 列的 Passenger_Details(用户在 1AC、2AC 或 3AC 之间进行选择)。

问题:我试图用下面提到的列创建查询

Train no      Date of journey            Status (Template field)

ABC           18/03/2013                    
                                                 1AC : 
                                         2AC :
                                         3AC  :

Xyz         18/03/2013                1AC : 
                                      2AC :
                                      3AC :

要求:在状态栏中,1AC 标签应显示 {count no. PASSENGERS_Detail 表中的行数,其中火车编号、DOJ 和类别匹配为 1AC 并将其显示为编号}。2AC 和 3AC 的情况也一样。1AC、2AC 和 3AC 的所有标签都应仅适用于所有列车的状态栏,这是不明智的。

4

1 回答 1

0

您的帖子中缺少某些信息,例如Date of journey来自哪里。因此,凭借您有限的信息,我设法想出了:

SELECT
  p.Train_No, 
  CASE
    WHEN p.Class_Type = 1 THEN '1AC: '
    WHEN p.Class_Type = 2 THEN '2AC: '
    WHEN p.Class_Type = 3 THEN '3AC: '
  END + CAST(COUNT(p.Class_Type) AS NVARCHAR(50)) AS Status
FROM Train_Details AS t
JOIN Passenger_Details AS p
  ON p.Train_No = t.Train_No
GROUP BY p.Train_NO, p.Class_Type;

SQL小提琴

编辑:

您还必须在 C# 代码中转换 Class_Type。

SELECT
  p.Train_No, 
  p.Class_Type,
  COUNT(p.Class_Type) AS Status
FROM Train_Details AS t
JOIN Passenger_Details AS p
  ON p.Train_No = t.Train_No
GROUP BY p.Train_NO, p.Class_Type;
于 2013-03-10T12:31:32.353 回答