SELECT 列上带有 where 子句的语句

SELECT statement with where clause on Column

我正在尝试通过 INNER JOIN 与另一个 table 从 table 收集一些数据。我想要得到的有 2 种类型,我需要将这 2 种类型分成 2 个不同的列。

在我内部加入的 table 中有一个名为 'Data' 的列和另一个名为 'Type' 的列,具体取决于我在内部加入时需要将它们分开的数据类型table 与另一个。

这是我正在尝试的脚本 运行:

SELECT 
C.StoreName, 'Time' = (SELECT CST.Data from tbStoreScheduleData CST
INNER JOIN tbPrograms P2 on CST.StoreScheduleDataID = P2.StoreScheduleDayID
 where CST.Type = 'T'  ) from tbPrograms P 

INNER JOIN tbStore C on P.StoreID= C.StoreID
INNER JOIN tbStoreScheduleData CS on P.StoreScheduleDayID = CS.StoreScheduleDataID

但是当我 运行 这样做时,我得到的所有时间都为 NULL。如何在语句的列上放置一个 where 子句?只获取时间值的类型 'T'?

在 Table 商店计划数据中,每个商店都有输入的条目值,一个是时间,另一个是日期,它根据类型分开和提取。如果你想查看星期几存储 运行s,你拉 TYPE D,如果你想要时间,你拉 TYPE T。但是在内部连接中拉这个是我坚持的事情。

已编辑:这是 StoreScheduleDataID 中的数据

+---------------------+------+--------------------+-----------+----------+
| StoreScheduleDataID | Type |        Data        | SortOrder | WeekDays |
+---------------------+------+--------------------+-----------+----------+
|                   1 | D    | Monday to Thursday |         1 | 2345     |
|                   2 | D    | Monday to Friday   |         2 | 23456    |
|                   3 | D    | Tuesday to Friday  |         3 | 3456     |
|                   4 | D    | Tuesdays           |        11 | 3        |
|                   5 | T    | 8:00AM to 2:15PM   |        90 | NULL     |
|                   6 | T    | 8:00AM to 1:00PM   |        83 | NULL     |
|                   7 | T    | 8:30AM to 1:30PM   |       108 | NULL     |
+---------------------+------+--------------------+-----------+----------+

期望的输出:

+------------------------------------+------------------+
| StoreName           Date           |       TIME       |
+------------------------------------+------------------+
| Store1          Monday to Friday   | 8:00AM to 2:15PM |
| Store2          Monday to Thursday | 8:00AM to 2:15PM |
| Store3          Monday to Friday   | 8:00AM to 2:15PM |
+------------------------------------+------------------+

我得到了第一个答案:

+------------------------------------+------+
| StoreName           Date           | TIME |
+------------------------------------+------+
| Store1          Monday to Friday   | NULL |
| Store2          Monday to Thursday | NULL |
| Store3          Monday to Friday   | NULL |
+------------------------------------+------+

也许是这样:

SELECT C.StoreName
      ,MAX(CASE WHEN CST.Type = 'T' THEN  CST.Data  END) AS [Time]
      ,MAX(CASE WHEN CST.Type = 'D' THEN  CST.Data  END) AS [Date]
from tbPrograms P 
INNER JOIN tbStore C 
    on P.StoreID= C.StoreID
INNER JOIN tbStoreScheduleData CS 
    on P.StoreScheduleDayID = CS.StoreScheduleDataID
GROUP BY C.StoreName