【发布时间】:2017-01-25 10:16:08
【问题描述】:
我有点习惯 SQL,但我需要你的帮助来编写我认为是复杂的表达式。这是上下文。为了简化,我有一个记录表,其中包含记录 ID (record_id)、呼叫时间 (call_time) 和计划时间 (dial_schedule_time)。 我正在尝试按时间细分记录数。为了让您了解我想要实现的目标,我的查询结果应返回如下内容:
Now |8 |9 |10 |11 |12 |13 |14 |15 |16 |17 |18 |19 |20 |
xxx |xxx |xxx |xxx |xxx |xxx |xxx |xxx |xxx |xxx |xxx |xxx |xxx |xxx |
其中 xxx 表示一天中按时间范围分组的 record_id 计数。要指定,“现在”表示 call_time 为 null 或 dial_schedule_time 值低于当前日期的 record_id 计数(不包括一天中的小时,例如,如果它是在我运行查询 25/01 的那一刻@ 10am,“现在”将是 record_id 的计数,其中 call_time 为空或 dial_schedule_time
我真的不知道从哪里开始,所以任何帮助将不胜感激。
谢谢你:)
样本数据:
record_id call_time dial_sched_time
447495 1475887698 1485324000
447492 1479705246 1485320400
447488 NULL 1366005540
447485 NULL 1367193360
447482 NULL 1366701480
447478 NULL 1366705440
447476 NULL 1370502240
447471 NULL 1367816160
447469 NULL 1367564640
447468 1479705267 1485320400
447467 1476680578 1485320400
447466 NULL 1368767580
447531 1479169276 1479180158
447530 1479169360 1479180189
447529 NULL 1369105020
【问题讨论】:
-
pivot 是你的朋友。请分享示例数据和预期的结果,我可以尝试编写
-
是的。编写一个查询以生成一个包含您想要的每个计数的行,然后使用 PIVOT(或 UNPIVOT)获取它并为每个结果生成一行和一列。
-
问题是我一直坚持编写查询来获取这些时间范围。
标签: sql sql-server