我有3點是由一個ID列在一個數據步驟中將多個數據集與條件合併?
版本SAS 9.2
D1(2個COLS)(ID欄是唯一的)
ID Value
1 81
2 81
3 82
4 82
5 81
6 78
D2(3 COLS)
聯的數據集ID Line Code
1 1 651
1 2 652
1 3 655
2 1 650
2 2 652
3 1 651
3 2 655
3 3 651
3 4 658
4 1 651
4 2 651
D3(2 COLS)
ID Vcode
1 A
1 B
2 A
2 C
3 B
3 D
我想具有從所有數據集的cols的結果數據集和所述標準是
- 值應該爲從D1 81或82和如果記錄僅包含具有「代碼」 651「行」,然後我們將它從最終數據集中排除。 而從D3的所有記錄上述兩個標準 符合
合力數據集中會像
ID Value Line Code Vcode
2 81 1 650 A
2 81 2 652 C
3 82 1 651 B
3 82 2 655 D
3 82 3 651 -
3 82 4 658 -
我寫數據的步驟每一步,但是我正在尋找一個數據步或PROC SQL可以將所有的邏輯
**
編輯10/2 0/2017
**
下面是我做了什麼。數據集D1 ... D3只是我的問題的別名,下面是實際的問題。
我需要在我的第二個proc sql語句中獲取D2中的記錄,並非所有'行都有'''代碼'651,652,655或656中的一個,但是我的proc sql不正確。我想排除這些。這就是爲什麼我的結果數據集沒有'ID'爲1和4的記錄。至於做一個datastep很好,但不止一個很好。
libname SAF "F:\Databases\SAF\sasdata\2015";
libname out "F:\projects\0122_Oct17\SASDATA";
Options symbolgen mlogic mprint;
Options obs=max;
proc contents data=SAF.Hosp_claimsj_lds;
run;
Data OUT.Hospice_TOB_81x82x;
Set SAF.Hosp_claimsj_lds (keep = CLAIM_NO PRVDR_NUM CLM_THRU_DT CLM_FAC_TYPE_CD CLM_SRVC_CLSFCTN_TYPE_CD CLM_FREQ_CD CLM_PMT_AMT);
WHERE CLM_FAC_TYPE_CD = '8' and CLM_SRVC_CLSFCTN_TYPE_CD in ('1','2'); /* TOB 81x and 82x */
TOB = CATT(OF CLM_FAC_TYPE_CD CLM_SRVC_CLSFCTN_TYPE_CD CLM_FREQ_CD);
Run;
proc sql;
create table out.Hospice_TOB_81x82x_ValCd as
select *
from SAF.Hosp_instval_lds
Where Claim_no in (Select Claim_no from out.Hospice_TOB_81x82x);
quit;
proc sql;
create table out.Hospice_TOB_81x82x_RevCd as
select *
from SAF.Hosp_revenuej_lds
Where Claim_no in (Select Claim_no from out.Hospice_TOB_81x82x)
and REV_CNTR NOTIN ('651', '652', '655','656');
quit;
請發佈您到目前爲止的嘗試,包括您的代碼和日誌以及您遇到的問題。 – Reeza
您不可能一步完成此輸出。這意味着最終的結果是通過將三個表中的表一對一地進行匹配而產生的,因此'data'步'merge';但是你的第二個條件將需要一些SQL。 – user2877959
這個問題需要更多的澄清。代碼如何出現在結果文件中,並排除所有**和**條件?也許你的意思是它被排除在** D1和D2 **之間,而不是D2和D3? – pinegulf