【问题标题】:Generating the Indicator by removing Saturday's and Sunday's通过删除周六和周日生成指标
【发布时间】:2020-12-25 15:43:59
【问题描述】:
Customer_Id     IEX_Type    Call_Date         Day_Name    Required_Output

074332          AFTW IMA    2019-08-02  Friday       1
074332          AFTW IMA    2019-08-03  Saturday     0
074332          AFTW IMA    2019-08-04  Sunday       0
074332          AFTW IMA    2019-08-05  Monday       0
074332          AFTW IMA    2019-08-06  Tuesday      0
074332          AFTW IMA    2019-08-07  Wednesday    0
074332          AFTW IMA    2019-08-08  Thursday     0 
074332          AFTW IMA    2019-08-12  Monday       1
074332          AFTW IMA    2019-08-13  Tuesday      0
074332          AFTW IMA    2019-08-14  Wednesday    0
074332          AFTW IMA    2019-08-22  Thursday     0
074332          AFTW IMA    2019-08-23  Friday       0
074332          AFTW IMA    2020-10-31  Saturday     0
074332          AFTW IMA    2020-11-01  Sunday       0
074332          AFTW IMA    2020-11-02  Monday       1
074332          AFTW IMA    2020-11-03  Tuesday      0
074332          AFTW IMA    2020-11-04  Wednesday    0
074332          AFTW IMA    2020-11-05  Thursday     0
074332          AFTW IMA    2020-11-06  Friday       0

对于上表,我需要根据 customer_id 和 IEX_Type 生成指标,但这里的条件是……call_date 在 5 天之间需要为第一条记录和其余记录生成指标为 1需要生成为 0 ......还有一个主要条件是......我们不应该考虑这 5 天里的星期六和星期天......

我尝试了递归 CTE 并生成了行号(),但我无法在这 5 天内删除周六和周日...。谁能帮我提供一个 T-SQL 脚本。

【问题讨论】:

  • “我已经尝试了递归 CTE 并生成了行号(),但我无法在这 5 天内删除周六和周日的。” 您忘记在其中包含该尝试问题也是如此。

标签: sql-server sql-server-2016


【解决方案1】:

检查以下是否适合您

;WITH 
cte_data AS (
    SELECT *,
            ROW_NUMBER() OVER (ORDER BY Call_Date ) rn
    FROM table_name 
    WHERE DATENAME(dw,Call_Date) not in ('saturday','sunday') 
)
, cte_data_excluded AS (
    SELECT *
    FROM table_name 
    WHERE DATENAME(dw,Call_Date)  in ('saturday','sunday') 
)

SELECT  Customer_Id,
        IEX_Type,
        Call_Date,
        Day_Name,
        CASE WHEN rn%5=1 
                THEN 1 
            ELSE 0 
        END Required_Output
FROM cte_data
UNION ALL
SELECT Customer_Id,
        IEX_Type,
        Call_Date,
        Day_Name,
        0
FROM cte_data_excluded
ORDER BY 3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2023-01-27
    相关资源
    最近更新 更多