2017-09-19 7 views
-1

SQL Serverで正規化された最初の行を選択するにはどうすればよいですか?私はこのテーブルを持っていると仮定しますSQLサーバーの正規化された最初の行を選択します

A B 
1 5 
1 2 
1 4 
2 7 
2 3 
2 3 

そして私は出力になりたい:

A B 
1 3  = 5 - 2 (first(B) - min(B) when A = 1) 
2 4  = 7 - 3 (first(B) - min(B) when A = 2) 
+1

どのように* first * Bを定義しますか? –

+0

3列目と6列目には何が起こっていますか? –

+0

@VamsiPrabhala私はテーブルがそのままであると仮定しています。だから '最初のB'はAの各グループの値が最初に来るものである。 – Psidom

答えて

3

あなたがfirst_valueminウィンドウ関数を使用することができます。 (somecolは、各グループの順序を指定する列に変更する必要があります)。

select distinct A,first_value(B) over(partition by A order by somecol)-min(B) over(partition by A) 
from tbl 
+0

答えをありがとう。私は考えを得ると思う。最初の値の代わりにB列からランダムな値を選択する方法はありますか? – Psidom

+1

['rand'](https://docs.microsoft.com/en-us/sql/t-sql/functions/rand-transact-sql)を' order by'のシードで使用することができます。 –

関連する問題