我正在处理索赔数据并根据其他费用表对索赔重新定价。所以我有两个桌子。索赔和安排。在这种情况下,重新定价归结为CPT_Code和Modifier。所以我有条件地加入
claims.CPT = fschedule.CPT
AND
claims.mod = fschedule.mod
以下是时间表的外观:
CPT || Modifier || Price
77325 || 26 || 73.25
77325 || TC || 52.77
77325 || XX || 101.21
77333 || XX || 12.31
但是,我的问题是索赔表可能具有:
CPT || Modifier
77333 || TC
但是该时间表可能有77333,但没有TC或只有26 XX。因此,我希望这些表都在
上联接claims.CPT = fschedule.CPT
AND
claims.mod = f.schedule.mod
但是如果fschedule中没有匹配项,那么我希望在fschedule修饰符XX时匹配它
我正在尝试使用case语句有条件地将两个表连接起来。
FROM
claims as c
LEFT JOIN
fschedule as f
ON
CASE WHEN c.mod IN ('TC','26') THEN
CASE WHEN f.mod IN ('TC','26') AND c.cpt= f.cpt AND c.mod = f.mod THEN c.cpt = f.cpt AND c.mod = f.mod
WHEN f.mod NOT IN ('TC','26') AND c.cpt= f.cpt AND c.mod <> f.mod THEN c.cpt = f.cpt AND c.mod <> f.mod
END
WHEN c.mod NOT IN ('TC','26') AND f.mod NOT IN ('TC','26') THEN c.cpt = f.cpt AND c.mod = f.mod
END;
我需要使用条件左连接,例如:
Claims as c
LEFT JOIN
fschedule as f
ON
c.CPT = f.CPT
AND
c.mod = f.mod
但是,如果Claims表具有:
CPT || Modifier || Paid
77333 || TC || 7.88
但是fschedule仅具有:
CPT || Modifier || Price
77333 || XX || 12.31
我需要Claims表仍然输出fschedule表中的12.31价格。 XX修饰符表示不存在修饰符。
将表连接到fschedule表之前,它拥有22,124行数据。在将它们与我当前的代码连接之后,该表将输出25,283行数据。我需要输出保持22,124。
简而言之,我需要将两个表结合在一起:
c.cpt = f.cpt
AND
c.mod = f.mod
但是,如果Claims表具有CPT代码和修饰符,但fschedule仅具有CPT代码且没有修饰符匹配,则我需要强制fschedule使用修饰符XX输出价格,因为它没有TC或26修饰符。
谢谢您的帮助。
*************更新的问题**************
索赔表:
CPT || Mod || Paid
77067 || TC || 83.10
费用表
CPT || Mod || Price
77067 || 26 || 76.23
77067 || XX || 103.01
因此,即使索赔表具有修饰符TC,但费用表具有代码但没有修饰符,当修饰符= XX时,我仍然希望它使用费用表连接到索赔表。所以我希望最终结果看起来像这样:
CPT || Mod || Paid || Fees_Price || Fees_Mod
77067 || TC || 83.10 || 103.01 || XX
到目前为止,这是输出:
CPT || Mod || Paid || Fees_Price || Fees_Mod
77067 || TC || 83.10 || ||
谢谢
答案 0 :(得分:0)
更简单的接通条件可以解决问题:
Private Sub CmdDelete_Click()
Dim i As Long
If ListBox1.ListIndex = -1 Then Exit Sub
For i = Range("A1000000").End(xlUp).Row To 1 Step -1
If Cells(i, 1) = ListBox1.List(ListBox1.ListIndex, 0) Then
Rows(i).Delete
End If
Next i
End Sub