了解此查询中的位置

时间:2019-01-16 21:01:46

标签: sql

我曾多次尝试通过使用以下命令对查询结果进行“分组” Group ByDistinct

结合多种结果,我了解我想要实现的目标,但是我对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

1 个答案:

答案 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”。

>

我猜您的真实目标是,但希望这能使您再次前进。