6

Col1 には X と Y のみが含まれます。

Col1    Col2

X       abc

Y       pqr

X       pqr

X       mnq

Y       cxr

私はそれを次のようにしたい:

X    Y    Col2

Yes  Yes  pqr
Yes  No   abc
Yes  No   mnq
No   Yes  cxr

どのような SQL クエリを記述すればよいですか?

4

3 に答える 3

12

SQL PIVOT 演算子を使用したソリューション:

SELECT Col2, 
  case when X=0 then 'No' else 'Yes' end as X, 
  case when Y=0 then 'No' else 'Yes' end as Y
FROM MyTable
PIVOT (
  count(Col1)
  FOR Col1 IN ([X], [Y])
) AS PivotTable;

実行サンプル: http://www.sqlfiddle.com/#!3/5856d/14

于 2012-10-04T09:15:26.270 に答える
4

これを試して:

with cte as (select col2,
                    min(col1)as X,
                    min(col1) as Y,
                    count(distinct col1) as cnt
             from  your_table
             group by col2)
select COL2,
       case when X='X' then 'Yes'  else 'No' end X,
       case when Y='Y' OR  cnt=2 then 'Yes'  else 'No' end Y
from cte


SQL フィドルのデモ

于 2012-10-04T09:25:20.537 に答える
-1

これを試して:

select col2,CASE WHEN COUNT(*)=1 then CASE WHEN min(col1)='X' then 'YES' else 'NO' end  else 'YES' end as 'X',
            CASE WHEN COUNT(*)=1 then CASE WHEN min(col1)='Y' then 'YES' else 'NO' end else 'YES' end  as 'Y' 
from MyTable group by col2 
于 2012-10-04T09:35:35.567 に答える