我有一个看起来像这样的表:
CREATE TABLE #C
(grpType varchar(10),
CPTCode varchar(10) NULL,
Month int NULL,
MTD money NULL,
MonthCount int NULL,
YTD money NULL,
YearCount int NULL,
Code varchar(10) NULL)
包含以下数据:
grpType CPTCode Month MTD MonthCount YTD YearCount Code
Month 76800 5 1321.61 27 6574.54 82 76800
Month 76856 5 246.01 3 380.64 6 76856
Month 76881 5 9778.95 131 50682.59 509 76881
Month 76942 5 22467.33 190 116663.58 674 76942
然后我有这张桌子:
CREATE TABLE #Prod
(grpType varchar(10),
TotalCharges money NULL,
TotalUnits float NULL,
RVU float NULL,
Code varchar(10) NULL,
CPTCode varchar(10) NULL)
有了这些数据:
grpType TotalCharges TotalUnits RVU Code CPTCode
Month 6100.00 12 0 76800 76800
Month -475.00 -1 0 76880 76880
Month 38749.00 81 0 76881 76881
Month 54733.00 114 0 76942 76942
我需要的是我的最终数据如下:
CPTCode MTD TotalCharges TotalUnits
76800 1321.61 6100.00 12
76856 246.01 NULL NULL
76880 NULL -475.00 -1
76881 9778.95 38749.00 81
76942 22467.33 54733.00 114
实现这一目标的最佳方式是什么?我已经尝试了左连接但它不起作用我得到了这个结果:
CPTCode MTD TotalCharges TotalUnits
76800 1321.61 6100.00 12
76881 9778.95 38749.00 81
76942 22467.33 54733.00 114
这排除了一些我不想要的数据。有没有人的建议?
谢谢
以下是不起作用的查询:
SELECT
#C.CPTCode,
#C.MTD,
#Prod.TotalCharges,
#Prod.TotalUnits
FROM
#C
LEFT JOIN #Prod ON #C.grpType = #Prod.grpType AND #C.Code = #Prod.Code
WHERE
(#C.CPTCode = '76800' OR #C.CPTCode = '76856' OR #C.CPTCode = '76880' OR #C.CPTCode = '76881' OR #C.CPTCode = '76942' OR #C.CPTCode = '93922')
答案 0 :(得分:1)
您可以在任一表格中输入“可选”条目。如果是这种情况,您将需要使用完整的外部联接。左连接仅用于保证#Prod表中的条目,但#Prod中不存在76856,因此被排除。右连接也不起作用,因为#C中不存在76880并且将被排除。
答案 1 :(得分:0)
我在Chad Cook和互联网上的其他朋友的帮助下解决了这个问题。这是我们提出的最终连接,输出是完美的。
SELECT
ISNULL(c.CPTCode, p.CPTCode) as CPTCode,
c.MTD,
p.TotalCharges,
p.TotalUnits
FROM
#C c
FULL OUTER JOIN #Prod p
ON c.grpType = p.grpType AND c.CPTCode = p.CPTCode