2016-03-31 30 views
0

でIDを使用せずに、以前の値にNULL値を置き換えこれは、IDを使用して行われるが、私はこのクエリを試してみてくださいIDは、SQL Server 2008の

SELECT 
     ID 
     ,COALESCE(p.number, 
      (SELECT TOP (1) number 
      FROM tablea AS p2 
      WHERE 
       p2.number IS NOT NULL 
       AND p2.ID <= p.ID ORDER BY p2.ID DESC))as Number--,Result = p.number 
    FROM TableA AS p; 

ID number 
1 100 
2 150 
3 NULL 
4 300 
5 NULL 
6 NULL 
7 450 
8 NULL 
9 NULL 
10 560 
11 NULL 
12 880 
13 NULL 
14 579 
15 987 
16 NULL 
17 NULL 
18 NULL 
+0

'ID'は、行の順序を定義するために使用されたSQL ServerでLAGとLEAD関数を使用して試すことができます。順序を定義する他の列がある場合は、それらを使用します。そのような列がない場合は追加してください。どういうわけか、「前の」行の意味をサーバーに伝える必要があります。 –

+0

私たちはROW_NUMBER()を使うことができます。しかし、私はそれを使う方法を知らない – Brinda

答えて

0

を使用せずにしたいです。これは、あなたが望む結果セットを得るのに役立ちます。このクエリはSQL Server 2008 R2で作成されます。

WITH CTE AS 
(SELECT id, number FROM tablea) 
SELECT A.id, A.number, ISNULL(A.number,B.number) number 
FROM CTE A 
OUTER APPLY (SELECT TOP 1 * 
FROM CTE 
WHERE id < a.id AND number IS NOT NULL 
ORDER BY id DESC) B 

あなたは2012/