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
我正在尝试通过 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