SQL Server。使用SSMS作为SQL编辑器。
我有一个查询得到的数据超过了我需要的数据。从本质上讲,我只需要显示结果,告诉我客户账户上第一次发送填充信息的日期。如果客户暂停发货并重新启动,则仅为第一次重新启动灌装日期。我一直在使用两个CROSS APPLY
、一个CROSS APPLY
和一个CTE等处理此查询。
我靠得很近,但只在第一排。第2行的最后一列应该是日期,第3行应该是NULL,因为在客户结束暂停日期后,我们没有发送任何内容。这是我目前掌握的代码。
这三张表分别是:
客户:
CUST_NO | SERIES_NO | ACCT_OPENED |
---|---|---|
W125 | 1001 | 2020年1月12日
您只需要一个CTE,但需要更多的列来实现您的结果
第一个解决方案使用子项而不是CTE,我认为它会比CTE更快,但我没有用第二个CTE来测试它,它可以去除所有不必要的行数比1 大的行数
SELECT c.[CUST_NO], c.[SERIES_NO] , CONVERT(date,[ACCT_OPENED]),CONVERT(date,[PAUSE_START_DATE]), CONVERT(date,[PAUSE_END_DATE]) ,CONVERT(date,(SELECT TOP 1 [FILL_DATE] FROM FILL_DATE_HX WHERE [CUST_NO] = c.[CUST_NO] AND [SERIES_NO] = c.[SERIES_NO] AND [FILL_DATE] > p.[PAUSE_END_DATE])) as RESTART_REPLACEMENT_DATE FROM CUSTOMER c INNER JOIN PAUSE_HX p ON c.[CUST_NO] = p.[CUST_NO] AND c.[SERIES_NO] = p.[SERIES_NO] GO
CUST_NO|SERIES_NO|(无列名(|(无类名(|(没有列名(|RESTART_REPLACEMENT_DATE:--------|--------|:---------------|:------------|:--------|:-----------------------W125|1001|2020-12-01|2021-01-07|2021-01-15|2021-01-1W125|1001|2020-12-01|2021-04-19|2021-04-28|2021-04-2W125|1001|2020-12-01|2021-06-02|2021-02-08|空
WITH first_fill_date AS ( SELECT f.[CUST_NO],f.[SERIES_NO],p.[PAUSE_END_DATE] , f.[FILL_DATE] , ROW_NUMBER() OVER (PARTITION By f.[CUST_NO],f.[SERIES_NO],p.[PAUSE_END_DATE] ORDER BY f.[FILL_DATE] ASC) row_num FROM FILL_DATE_HX f JOIN PAUSE_HX p ON f.[CUST_NO] = p.[CUST_NO] AND f.[SERIES_NO] = p.[SERIES_NO] AND f.[FILL_DATE] > p.[PAUSE_END_DATE] ) SELECT c.[CUST_NO], c.[SERIES_NO] , CONVERT(date,[ACCT_OPENED]),CONVERT(date,[PAUSE_START_DATE]), CONVERT(date,p.[PAUSE_END_DATE]) ,CONVERT(date,ff.[FILL_DATE]) as RESTART_REPLACEMENT_DATE FROM CUSTOMER c INNER JOIN PAUSE_HX p ON c.[CUST_NO] = p.[CUST_NO] AND c.[SERIES_NO] = p.[SERIES_NO] LEFT JOIN first_fill_date ff ON ff.[CUST_NO] = p.[CUST_NO] AND ff.[SERIES_NO] = p.[SERIES_NO] AND ff.[PAUSE_END_DATE] = p.[PAUSE_END_DATE] AND ff.row_num = 1
相关内容
- 如何比较R中两个矩阵的值?
- 在spark sql中计算两个日期之间的日期差
- 为什么事件监听器需要两个元素?
- Python Regex:选择两个括号之间的所有内容,忽略中间的括号
- 检查数字在两个不同数字中的位置是否相同
- 比较包含<字符串,对象>的两个映射的键和值
- 如何连接或列出同一列中的两个值,以便将其与其他列中的值连接起来
- 使用两个相互依赖的v-select框可以确保没有重复
- 我如何创建一个数据框架的两个列表?
- PYTHON:使用if语句查找两个变量列相同的地方并存储索引
- 如何链接两个llvm模块?
- 由逗号分隔的 Python 字符串,仅出现在两个特定字符之间,><
- AWS -使用两个云前端源到同一个S3桶?
- 计算两个函数的时间复杂度
- 在Unity中参考一个平面在两个轴上旋转四元数的问题
- 如何在ThingsDB中获得两个datetime对象之间的差异?
- 操作json,通过键值删除组中的两个项
- 将pandas数据框划分为两个子集
- SQL RN在两个CTE中计数,但仍然无法获得所需的精确行
- 在删除和重新安装npm之后,有两个标题反应导航!(RN)
最新更新
- 在使用相同group_id的kafka消费者中使用assign而不是subscribe是否有影响? &
- 让谷歌的见解清楚地表明,我的网站上有不止一个页面
- 我无法在反应中删除 html 标签
- 获取/读取邮件消息并输出纯文本
- 显示:表格单元格与行号不对齐
- 如何使用Toga应用访问Android通知
- 访问create_template_view api时出现INVALID_REQUEST_BODY错误
- 使用预处理器条件生成C/ c++变量名
- 此处映射计算路线API上的错误414
- Oracle数据库中的并行提示
- woocommerce在每个类别结帐后自定义重定向
- 是否有可能在AWS中设置一个webhook来监控特定的电子邮件地址,并将接收到的电子邮件信息传递给Lambda?<
- 仅使用numpy实现CNN时出错
- 过程展开不规则时间序列
- 插入多个带别名的外键
- 如何从API响应中提取Array
- WebLogic 14c -性能调优测试
- Google-Drive-API文件没有使用FORM_ID找到
- 尝试创建一个伸缩盒容器,但它不会创建盒子并显示文本
- 是否有一种方法(最好是R)从BirdLife数据区自动提取信息?
- 为什么process.env.JWT_EXPIRE未被发现?js筑巢
- Python记录器没有从根记录器继承level
- 是什么导致了python的f字符串中"f "{a}""与"f "{a=}""之间的差异?
- 标题库使用介子
- 打印偶数的"count",而循环使用 if
- 为什么我要将数组转换为对象
- 通过共享操作符将可连接的Flux转换为Hot不工作
- 从演示文稿中删除所有空的/未使用的形状
- 破坏错误取决于变量的顺序
- c -试图编写一个MIPS汇编程序
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium