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)
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)
あなたがfirst_value
とmin
ウィンドウ関数を使用することができます。 (somecol
は、各グループの順序を指定する列に変更する必要があります)。
select distinct A,first_value(B) over(partition by A order by somecol)-min(B) over(partition by A)
from tbl
答えをありがとう。私は考えを得ると思う。最初の値の代わりにB列からランダムな値を選択する方法はありますか? – Psidom
['rand'](https://docs.microsoft.com/en-us/sql/t-sql/functions/rand-transact-sql)を' order by'のシードで使用することができます。 –
どのように* first * Bを定義しますか? –
3列目と6列目には何が起こっていますか? –
@VamsiPrabhala私はテーブルがそのままであると仮定しています。だから '最初のB'はAの各グループの値が最初に来るものである。 – Psidom