2016-12-08 4 views
1

私はSQLでクエリを持っているを更新:前の数の親IDを取得し、他の列

私はこの

id typeid amount created date   parenttypeid 
38 2 5000.00 2016-12-08 15:01:27.433 NULL 
39 2 5000.00 2016-12-08 15:01:27.433 NULL 
40 1 5000.00 2016-12-08 15:01:27.433 NULL 
41 4 5000.00 2016-12-08 15:01:27.437 NULL 
42 1 5000.00 2016-12-08 15:01:27.437 NULL 
43 4 5000.00 2016-12-08 15:01:27.437 NULL 
44 1 5000.00 2016-12-08 15:01:27.437 NULL 
45 1 5000.00 2016-12-08 15:01:27.437 NULL 
46 3 5000.00 2016-12-08 15:01:27.437 NULL 
47 3 5000.00 2016-12-08 15:01:27.437 NULL 

のようなテーブルを持って、私は特定の数の直接の数を見つける必要があると

id型:例えばparenttypeidフィールドに

をその親IDとアップデートを入手4、その前の値が3である、我々は、id型3との2行を持っている私は、最新のを取得する必要がありますidの親のIDをタイプする - すなわち、。47、parenttypeidのカラムを47に更新する。

私はSQLクエリのみが必要です

いずれかを助けてください。

よろしく、 スリラム

+0

使用しているRDBMSのタグ。 –

+0

タスクは割り当てのように私に聞こえます。もしそうなら、これはあなたの宿題のコミュニティではないことに注意してください。さらに、あなた自身であなたの問題を解決するために取った手順は何ですか?あなたは問題の特定の時点で立ち往生していますか?あなたが自分で何らかの努力をしていることを示すなら、ここの人々が喜んであなたを助けます。 –

+0

私はsqlを初めて使用しています。質問をするのは間違っています。 – ravi

答えて

0

これはあなたがこの(SQL Server 2012のまたはそれ以上)を試してみてください

select top 1 id from table where typeid=4-1 order by id desc 
+0

私はSQL Serverを使用しています。2014 – ravi

+0

上記の作業は正常に動作し、更新を試行する必要があります – Madhivanan

+0

制限が機能していません。上記のクエリを説明することができます – ravi

0

を試みるように私はあなたを残してSQL Serverを使用し、一部を更新仮定して必要なものを与えます:

;WITH ToUpdate 
AS (
    SELECT TOP 1 id,LAG(id,1) OVER (ORDER BY typeid DESC) AS [val] 
    FROM [YourTable] 
    WHERE typeid=(LAG(typeid) OVER (ORDER BY typeid DESC))-1 
    ORDER BY id DESC 
) 

Update Y 
SET Y.id=C.[val] 
FROM CTE C 
INNER JOIN [YourTable] Y ON Y.id=C.id 
+0

あなたの質問を実行している間、Bala、まだ私は問題に直面しています – ravi

+0

ウィンドウ関数はSELECT句またはORDER BY句にしか現れません。 – ravi

関連する問題