我曾多次尝试通过使用以下命令对查询结果进行“分组”
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
答案 0 :(得分:0)
这只是一个示例,但它可以帮助您了解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(最早的begin_date),Effective_end(最早的END_DATE,用于处理null的注释注释,您可能希望有所不同)以及sql为每个client_name遇到的第一个“ policy_NUMBER”。
>我猜您的真实目标是,但希望这能使您再次前进。