Sql P BY子句将输出弄乱。我很感激你的帮助,和我一起坚持这一点。如果您能提供任何其他见解,我们将不胜感激。 +----------------------+-------------+------------+------------------+ |
P BY子句将输出弄乱。我很感激你的帮助,和我一起坚持这一点。如果您能提供任何其他见解,我们将不胜感激。Sql P BY子句将输出弄乱。我很感激你的帮助,和我一起坚持这一点。如果您能提供任何其他见解,我们将不胜感激。 +----------------------+-------------+------------+------------------+ | ,sql,tsql,Sql,Tsql,P BY子句将输出弄乱。我很感激你的帮助,和我一起坚持这一点。如果您能提供任何其他见解,我们将不胜感激。 +----------------------+-------------+------------+------------------+ | Physician | Procedure | Total Jars | Total Encounters | +----------------------+-------------+------------+----
+----------------------+-------------+------------+------------------+
| Physician | Procedure | Total Jars | Total Encounters |
+----------------------+-------------+------------+------------------+
| NULL | NULL | 531 | 790 |
| Smith MD, Benjamin A | NULL | 531 | 790 |
| Smith MD, Benjamin A | Procedure A | 379 | 581 |
| Smith MD, Benjamin A | Procedure B | 128 | 180 |
| Smith MD, Benjamin A | Procedure C | 24 | 29 |
+----------------------+-------------+------------+------------------+
DECLARE @start_date VARCHAR(8)
,@end_date VARCHAR(8)
,@practice_id CHAR(4)
SET @start_date = '20130601'
SET @end_date = '20140601'
SET @practice_id = '0001'
;WITH jars
AS
(
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle_1_ b1 ON pe.enc_id = b1.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b1.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle2_ b2 ON pe.enc_id = b2.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b2.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle3_ b3 ON pe.enc_id = b3.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b3.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle4_ b4 ON pe.enc_id = b4.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b4.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle5_ b5 ON pe.enc_id = b5.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b5.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle6_ b6 ON pe.enc_id = b6.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b6.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle7_ b7 ON pe.enc_id = b7.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b7.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle8_ b8 ON pe.enc_id = b8.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b8.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle9_ b9 ON pe.enc_id = b9.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b9.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle10_ b10 ON pe.enc_id = b10.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b10.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle11_ b11 ON pe.enc_id = b11.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b11.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle12_ b12 ON pe.enc_id = b12.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b12.eso1, '') <> ''
)
SELECT pm.description AS [Physician],
e.event AS [Procedure],
COUNT(j.enc_id) AS [Total Jars],
COUNT(pe.enc_id) AS [Total Encounters]
FROM patient_encounter pe
INNER JOIN person p ON pe.person_id = p.person_id AND pe.practice_id = @practice_id
INNER JOIN appointments ap ON pe.enc_id = ap.enc_id
AND ap.resched_ind = 'N'
AND ap.delete_ind = 'N'
AND ap.cancel_ind = 'N'
AND ap.appt_kept_ind = 'Y'
INNER JOIN events e ON ap.event_id = e.event_id
INNER JOIN provider_mstr pm ON pe.rendering_provider_id = pm.provider_id
INNER JOIN location_mstr lm ON pe.location_id = lm.location_id
LEFT JOIN (SELECT enc_id
FROM jars
GROUP BY enc_id) AS j ON pe.enc_id = j.enc_id
WHERE pe.enc_timestamp BETWEEN @start_date AND @end_date
GROUP BY GROUPING SETS
( (pm.description, e.event)
,ROLLUP(pm.description)
)
ORDER BY pm.description, e.event
;WITH jars
AS
(
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle_1_ b1 ON pe.enc_id = b1.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b1.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle2_ b2 ON pe.enc_id = b2.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b2.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle3_ b3 ON pe.enc_id = b3.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b3.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle4_ b4 ON pe.enc_id = b4.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b4.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle5_ b5 ON pe.enc_id = b5.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b5.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle6_ b6 ON pe.enc_id = b6.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b6.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle7_ b7 ON pe.enc_id = b7.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b7.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle8_ b8 ON pe.enc_id = b8.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b8.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle9_ b9 ON pe.enc_id = b9.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b9.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle10_ b10 ON pe.enc_id = b10.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b10.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle11_ b11 ON pe.enc_id = b11.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b11.eso1, '') <> ''
UNION ALL
SELECT pe.enc_id AS enc_id
FROM patient_encounter pe
INNER JOIN Bottle12_ b12 ON pe.enc_id = b12.enc_id
AND pe.enc_timestamp BETWEEN @start_date AND @end_date
AND ISNULL(b12.eso1, '') <> ''
),
totals AS(
SELECT pm.description AS [Physician],
e.event AS [Procedure],
COUNT(j.enc_id) AS [Total Jars],
COUNT(pe.enc_id) AS [Total Encounters],
CASE WHEN COUNT(pe.enc_id) <> 0 THEN CONVERT(float, COUNT(j.enc_id))/CONVERT(float, COUNT(pe.enc_id)) ELSE 0 END AS [AvgTotal]
FROM patient_encounter pe
INNER JOIN person p ON pe.person_id = p.person_id AND pe.practice_id = @practice_id
INNER JOIN appointments ap ON pe.enc_id = ap.enc_id
AND ap.resched_ind = 'N'
AND ap.delete_ind = 'N'
AND ap.cancel_ind = 'N'
AND ap.appt_kept_ind = 'Y'
INNER JOIN events e ON ap.event_id = e.event_id
INNER JOIN provider_mstr pm ON pe.rendering_provider_id = pm.provider_id
INNER JOIN location_mstr lm ON pe.location_id = lm.location_id
LEFT JOIN (SELECT enc_id
FROM jars
GROUP BY enc_id) AS j ON pe.enc_id = j.enc_id
WHERE pe.enc_timestamp BETWEEN @start_date AND @end_date
GROUP pm.description, e.event)
SELECT [Physician], [Procedure],
Avg([Total Jars]) [Total Jars],
Avg([Total Encounters]) [Total Encounters],
Avg([AvgTotal]) [AvgTotal]
from totals
GROUP BY [Physician], [Procedure]
WITH ROLLUP