1

以下のタスクにOracleデータベースを使用しています。

私はデータが以下のようなテーブルを持っています -

 ID      SSN
 -------------
 10       A
 20       A
 10       B
 20       B
 30       B
 20       C

今、これらのレコードを以下の形式で表示したい -

 SSN      ID_10_Indicator     ID_20_Indicator    ID_30_Indicator
 ----------------------------------------------------------------
 A            Y                      Y                 N
 B            Y                      Y                 Y
 C            N                      Y                 N

以下のクエリを使用しています-

select ssn, 
(case when ID = '10' then 'Y' else 'N') as ID_10_Indicator, 
(case when ID = '20' then 'Y' else 'N') as ID_20_Indicator,
(case when ID = '30' then 'Y' else 'N') as ID_30_Indicator
from table1
group by ssn, 
(case when ID = '10' then 'Y' else 'N'),
(case when ID = '20' then 'Y' else 'N'),
(case when ID = '30' then 'Y' else 'N')

しかし、SSN の一意の行を取得できません。代わりに、以下のようにレコードを取得しています-

 SSN      ID_10_Indicator     ID_20_Indicator    ID_30_Indicator
 ----------------------------------------------------------------
 A            Y                      N                 N     
 A            N                      Y                 N
 B            Y                      N                 N
 B            N                      Y                 N
 B            N                      N                 Y
 C            N                      Y                 N

提案してください。どんな助けでも素晴らしいでしょう。

4

1 に答える 1

3
select ssn, 
  NVL (MAX (CASE ID when '10' then 'Y' else null end ),'N') as ID_10_Indicator, 
  NVL (MAX (CASE ID when '20' then 'Y' else null end ),'N') as ID_20_Indicator, 
  NVL (MAX (CASE ID when '30' then 'Y' else null end ),'N') as ID_30_Indicator
from table1
group by ssn
;
于 2013-07-16T09:18:19.277 に答える