個別の people_id カウントを返したい生データを含むテーブルがあります。カウントのグループが異なる場合、CTE でこれを行うにはどうすればよいですか? これが私がこれまでに持っているものです:
;with cte as
(select
program_modifier_id, program_modifier, people_id, group_profile_id,
current_status, license_number, is_managing_office,
program_info, program_name, program_code, group_profile_type_id
From
#enrollments en with (nolock) )
SELECT 'TN - Level 4',
CASE WHEN (program_modifier_id = 'E1AA7A36-0500-4BAE-A0AA-D9E0BC91A6F3' )
THEN COUNT(DISTINCT people_id) END AS 'Total Ct'
from cte
group by program_modifier_id
UNION
SELECT 'TN - Level 3 CE - RTC',
CASE WHEN (program_modifier_id = '213D080F-E340-44B6-AC8C-4233D1193602'
AND license_number like '%-RTC-%')
THEN COUNT(DISTINCT people_id) END AS 'Total Ct'
from cte
group by program_modifier_id, license_number
これからの出力は次のとおりです。
TN - Level 3 CE - RTC 49
TN - Level 3 CE - RTC 38
TN - Level 4 56
TN - Level 3 CE - RTC 7
TN - Level 3 CE - RTC 24
TN - Level 3 CE - RTC NULL
TN - Level 4 NULL
しかし、出力を次のようにしたい:
TN - Level 3 CE - RTC 118
TN - Level 4 56
したがって、問題は 2 つあります。まず、これらのカウントの一部には、WHERE 句に複数の条件が含まれています。たとえば、program_modifier_id 対 program_modifier_id および license_number です。2 つ目の問題は、上記の TSQL コードを使用すると、WHERE 句に license_number を含めるために、program_modifier_id と license_number の両方でグループ化する必要があることです。しかし、license_Number のカウントの内訳は望んでいません。license_number に関係なく、合計数が必要です。この TSQL クエリを変更して、必要な数を達成するにはどうすればよいですか?