sql-server - 通过删除周六和周日生成指标
问题描述
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 脚本。
解决方案
检查以下是否适合您
;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
推荐阅读
- python - python中切换器给出的对象问题
- java - 我的设备已获得授权,但在我运行登录测试后,它说要再次授权 -QA Tester
- xaml - Xaml Islands - Microsoft 入门示例不适合我
- python - 在 Python 3 中打印时清除行
- java - 具有名称解析更新和主动监控的弹性 HTTP 客户端
- python - 无法从网页解析产品标题及其价格
- google-bigquery - 在 BigQuery 中获取每月最后一条已知记录
- r - 为什么重新排序功能只能部分工作?
- ios - 如何解决 iOS 13 上的“XPC 连接中断”?
- php - 带有可邮寄的 Laravel 通知