sql - 了解此查询中的位置
问题描述
我已经多次尝试使用 , 等来“分组”这个查询的
Group By
结果Distinct
。
我了解我想要实现的目标,结合多个结果,但我对 SQL 还是很陌生。我一直在尝试几个子句,但似乎没有任何效果。我一天中的大部分时间都在做这件事。我终于不知所措了。
先感谢您。
SELECT
PAYER_PLAN_NAME,PAYER_NAME,ACTUAL_BEGIN_DATETIME,
ACTUAL_END_DATETIME,CLIENT_NAME,BEGIN_DATE,END_DATE,
POLICY_NUMBER,ID_NUMBER
FROM RPT_CLIENT_PAYER_PLAN P
JOIN RPT_SCHEDULED_ACTIVITIES A ON P.CLIENT_ID = A.CLIENT_ID
WHERE trunc(ACTUAL_BEGIN_DATETIME) >= ${p_begin_time}
AND trunc(ACTUAL_END_DATETIME) <= ${p_end_time}
AND trunc(BEGIN_DATE) <= ${END_DATE}
AND trunc(END_DATE)> ${BEGIN_DATE}
OR trunc(END_DATE) IS NULL
解决方案
这只是一个示例,但它可能会帮助您了解 GROUP BY 功能的工作原理:
SELECT CLIENT_NAME
, min(BEGIN_DATE) AS Effective_start
, max(END_DATE) AS Effective_end
, first(POLICY_NUMBER) AS Policy_number FROM RPT_CLIENT_PAYER_PLAN P
JOIN RPT_SCHEDULED_ACTIVITIES A ON P.CLIENT_ID = A.CLIENT_ID
WHERE trunc(ACTUAL_BEGIN_DATETIME) >= ${p_begin_time}
AND trunc(ACTUAL_END_DATETIME) <= ${p_end_time}
AND trunc(BEGIN_DATE) <= ${END_DATE}
AND trunc(END_DATE)> ${BEGIN_DATE}
OR ISNULL(trunc(END_DATE), GETDATE()) -- sets end date to today id null
GROUP BY CLIENT_NAME
这应该给你一个Client_names表,Effective_start(最早的开始日期),Effective_end(最旧的END_DATE,注意处理空值的注释,你可能想要一些不同的东西),以及sql遇到的每个client_name的第一个“policy_NUMBER”。
我猜你的真正目标是,但希望这会让你再次前进。
推荐阅读
- python - 如何使用 numpy 将导入的 csv 中的一列从字符串转换为浮点数?
- javascript - Firebase Cloud Function 获取大型集合中的所有文档不起作用
- typescript - 如何在nestjs中动态连接数据库?
- c# - 仅当 LINQ 中的条件时选择
- php - 使用 NodeMCU ESP8266 将 Arduino 数据发送到 mySQL 数据库
- azure - 将角色分配给新用户时,是否可以限制用户在角色下拉列表中显示 builtInRoles?
- python - 代码未在异步 Python Websocket 中打印
- reactjs - 切片redux-toolkit(撤销代理)中的奇怪状态行为
- swift - 带有导航视图SwiftUI IOS 14的列表上的未知填充
- python - 如何在函数调用返回多个输出并且我必须接收它们的python中格式化长行?