私は学生のレコードのSQLテーブルを持っていると私は主要の学生の寸法原因のいくつかの重複行を持っているので、今、私はこのような何かを持っているように重複行を削除します。追加の列
ID Major
----------
1 CS
1 Mgt
何I
ID Major Major2
----------
1 CS Mgt
私は学生のレコードのSQLテーブルを持っていると私は主要の学生の寸法原因のいくつかの重複行を持っているので、今、私はこのような何かを持っているように重複行を削除します。追加の列
ID Major
----------
1 CS
1 Mgt
何I
ID Major Major2
----------
1 CS Mgt
ピボットするには番号が必要です。そして、あなたはpivot
または条件付きの集約のいずれかを使用して旋回することができる:
select id,
max(case when seqnum = 1 then major end) as major_1,
max(case when seqnum = 2 then major end) as major_2
from (select t.*,
row_number() over (partition by id order by (select null)) as seqnum
from t
) t
group by id;
注:あなたは、「2」は専攻をカウントするのに十分な大きさであることを検証する必要があります。
select a.id as id,
a.major as major,
b.major as major2
from YOUR_TABLE a
left join YOUR_TABLE b on
a.id = b.id
and (b.major is null or a.major > b.major)
:あなたが使用して最大値を得ることができます直接
SELECT [ID],[CS] AS Major , [Mgt] AS Major2 from Your_Table_Name
PIVOT
(max(Major)for [Major] IN ([CS] , [Mgt]))as p
これはあなたの
Select
ID,
(select top 1 Major from <Your_Table> where id=T.Id order by Major) Major,
(case when count(Id)>1 then (select top 1 Major from #temp where id=T.Id order by Major desc) else null end) Major2
from <Your_Table> T
Group By
ID
を助ける:あなたは、主要なのせいぜい2つの異なる値を持っている場合は
select top 1 id, count(*)
from t
group by id
order by count(*) desc;
'id by by order by part 'の'(select null) 'の目的は何ですか? –
OK、これは事実上「どんな順序であれ」を意味することがわかりました。おじゃまします。 –