我有两张桌子:
**OrgPhysicianMappingtbl**
org varchar
physician varchar
**PhysicianDatatbl**
physician varchar
names varchar
datapoint int
来自OrgPhysicianMappingtbl
的数据:
+---------+-----------+
| org | physician |
+---------+-----------+
| ABC123 | B032 |
| ABC123 | B023 |
| ABC123 | A022 |
| ABB443 | A32 |
| ABB332 | F23 |
| BVD222 | G23 |
| BVD222 | GG2 |
| BOS5223 | G4 |
+---------+-----------+
来自PhysicianDatatbl
的数据:
+------------+----------------------------------+-----------+
| physician | names | datapoint |
+------------+----------------------------------+-----------+
| B032 | CASH | 68 |
| B032 | MEDICAID | 89 |
| B032 | ALL THIRD PARTY | 3,769 |
| B032 | WORKERS COMP | 39 |
| B032 | US SCRIPT (PROC-UNSP) | 86 |
| B032 | MEDCO HLTH SOLUTIONS (PROC-UNSP) | 79 |
| B032 | BCBS WELLPOINT/ANTHEM/WEL UNSPEC | 76 |
| B032 | KY EMPLOYEES HLTH PLN/KEHP (KY) | 62 |
| B032 | UHC/PAC/AARP MED PDP GENERAL(KY) | 52 |
| B032 | WELLCARE OF KENTUCKY (KY) | 42 |
| B032 | CCRX MED PDP GENERAL (KY) | 39 |
| B032 | WORKERS COMP - EMPLOYER | 37 |
| B032 | HUMANA/CAREPLS MED D GENERAL(KY) | 27 |
| B032 | CIGNA MEDICARE RX PDP GNRL (KY) | 26 |
| B023 | CASH | 167 |
| B023 | MEDICAID | 34 |
| B023 | ALL THIRD PARTY | 3,165 |
| B023 | WORKERS COMP | 56 |
| B023 | WORKERS COMP - EMPLOYER | 50 |
| B023 | BLUE CHOICE PPO (TX) | 48 |
| B023 | TRICARE HUMANA MILITARY SOUTH | 47 |
| B023 | MEDCO HLTH SOLUTIONS (PROC-UNSP) | 32 |
| B023 | BROADSPIRE INC | 27 |
| B023 | ADVANCEPCS (PROC-UNSP) | 27 |
| B023 | UNITED HLTHCARE-(TX) TEXAS | 23 |
| B023 | HEALTHSPRING PDP (TX) | 18 |
| B023 | AETNA INC.-(TX) HOUSTON | 13 |
| B023 | WELLCARE MEDICARE D GENERAL(TX) | 12 |
+------------+----------------------------------+-----------+
期望结果的示例:
+-----------+-----------------+-----------+
| org | names | sum(datapoints|
+-----------+-----------------+-----------+
| ABC123 | CASH | 236 |
| ABC123 | MEDICAID | 123 |
| ABC123 | ALL THIRD PARTY | 6,933 |
| ABC123 | WORKERS COMP | 94 |
| … | … | … |
+-----------+-----------------+-----------+
我需要将我的数据汇总到ORG级别。每个ORG有多名医生。每位医生都与names
和datapoints
相关联。我想要的结果是所有datapoints
每names
累计到org
级别的总和。
有人可以让我开始这个吗?
这是我试过的:
select o.org,p.names,sum(p.datapoint)
from OrgPhysicianMappingtbl o
join PhysicianDatatbl p
on o.physician=p.physician
group by o.org,p.names
答案 0 :(得分:4)
您可以使用GROUPING SETS
:
select o.org, p.names, sum(p.datapoint)
from OrgPhysicianMappingtbl o
inner join PhysicianDatatbl p
on o.physician = p.physician
GROUP BY GROUPING SETS((o.org), (p.names))
答案 1 :(得分:2)
嘛!
SELECT o.org, p.names, sum(p.datapoint)
FROM OrgPhysicianMappingtbl o INNER JOIN PhysicianDatatbl p
ON o.physician = p.physician
GROUP BY o.org, p.names
答案 2 :(得分:2)
select o.org,p.names,sum(p.datapoint)
from OrgPhysicianMappingtbl o
join PhysicianDatatbl p
on o.physician=p.physician
group by o.org,p.names with ROLLUP
答案 3 :(得分:2)
即使这应该有效
SELECT org,names,TotalDP
FROM(
SELECT
o.org
,p.names
,TotalDP = SUM(p.datapoint) OVER(PARTITION BY o.org,p.names)
,Rn = ROW_NUMBER() OVER(PARTITION BY o.org,p.names ORDER BY (SELECT 1))
FROM OrgPhysicianMappingtbl o
JOIN PhysicianDatatbl p on o.physician=p.physician)X WHERE X.Rn = 1