3

我有两张桌子:

**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 有多名医生。每个医生都有它namesdatapoints与之相关。我想要的结果是所有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
4

4 回答 4

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))

SQL Fiddle with Demo

于 2012-09-13T10:42:52.030 回答
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

http://www.sqlfiddle.com/#!2/f59c4/1

于 2012-09-13T04:03:30.487 回答
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
于 2012-09-13T06:44:28.430 回答
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
于 2012-09-13T10:27:42.570 回答