您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL:如何显示仅代表一周中某几天的数据显示一周中的整整7天?

SQL:如何显示仅代表一周中某几天的数据显示一周中的整整7天?

您可以使用以下解决方案:

SELECT
    a.StoreID,
    a.weekdayname,
    b.isOpen
FROM
(
    SELECT *
    FROM
    (
        SELECT DISTINCT StoreID
        FROM MyTable
    ) aa
    CROSS JOIN
    (
        SELECT 1 AS weekdaynum, 'Sunday' AS weekdayname UNION ALL
        SELECT 2, 'Monday'                UNION ALL
        SELECT 3, 'Tuesday'               UNION ALL
        SELECT 4, 'Wednesday'             UNION ALL
        SELECT 5, 'Thursday'              UNION ALL
        SELECT 6, 'Friday'                UNION ALL
        SELECT 7, 'Saturday'
    ) bb
) a
LEFT JOIN
    MyTable b ON a.StoreID = b.StoreID AND 
                 a.weekdaynum = b.[DayOfWeek]
WHERE
    a.StoreID = @I_StoreID
ORDER BY
    a.StoreID, a.weekdaynum

在这里,我们手动选择所有工作日名称CROSS JOIN,每个名称各不相同StoreID。然后,将选择的结果包装在FROM子句中,并LEFT JOIN在条件StoreID与星期几都匹配的情况下返回主表。如果不是,则该isOpen字段将为NULL,但StoreID仍会显示和相应的工作日。

SQLServer 2022/1/1 18:53:28 有435人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶