質問する
2654 次
2 に答える
0
ifc
次のような手法で、ステートメントを使用して必要なことを達成できると思います。
select count(distinct ifc(sex='M',name,'DUMMYVALUE')) -1 as number_of_distinct_male_names
from my sashelp.class
'DUMMYVALUE'は一意の男性名のリストに1を追加するため、-1を引く必要があります。
あなたの場合、満たすべき2つの条件があるため、少し複雑になります。したがって、ネストされたifc
ステートメントが必要になります。
select count(distinct
ifc(if_my_condition1_is_met,
unique_value,
ifc(if_my_condition2_is_met,
alternate_unique_value,
'DUMMY_VALUE')
) -1 as number_of_conditional_unique_values
from my table
于 2012-10-25T19:54:37.263 に答える
0
答えは「はい」です。テーブルと列をたどるのは少し難しいと思います。プロバイダーのセットが異なると仮定して、電話番号のないものでカウントを実行し、これを 2 番目のテーブルに結合するカウントと結合します。
クエリは次のようになります。
select PROV_PHONE, count(distinct prv_id) as uni_prv, count(distinct pt_id) as uni_pt
from a
where PRV_SPECIAL_HANDLING='N'
group by prov_phone
union all
select PROV_PHONE, count(distinct prv_id) as uni_prv, count(distinct pt_id) as uni_pt
from a join
b
on a.prv_id = b.prv_id
where PRV_SPECIAL_HANDLING='Y'
group by prov_phone
重複がある場合は、グループ化する前にユニオンを実行する必要があります。
select PROV_PHONE, count(distinct prv_id) as uni_prv, count(distinct pt_id) as uni_pt
from ((select PROV_PHONE, prv_id, pt_id
from a
where PRV_SPECIAL_HANDLING='N'
group by prov_phone
) union all
(select PROV_PHONE, b.prv_id, b.pt_id
from a join
b
on a.prv_id = b.prv_id
where PRV_SPECIAL_HANDLING='Y'
)
) t
group by prov_phone
に置き換えましcount(unique)
たcount(distinct)
。SASは後者をサポートしていると確信しており、それは標準SQLです。
于 2012-10-25T19:25:53.630 に答える