1

アドバイスが必要です。

特定の期間のフィールドにnullが含まれる列があります。

Name     Date
-----    -----
Cat      1/1/2012
Dog      1/2/2012
Fish     1/3/2012
NULL     1/4/2012
Goat     1/5/2012
NULL     1/6/2012
Sheep    1/7/2012

上記の例では、列にnull値がある場合は常に、列Nameの最後の既知の値を選択するSQLステートメントをどのように記述しますか?

たとえば、テーブルを次のようにします。

Name      Date
-----    -----
Cat        1/1/2012
Dog        1/2/2012
Fish       1/3/2012
Fish       1/4/2012
Goat       1/5/2012
Goat       1/6/2012
Sheep      1/7/2012

この擬似コードは機能しますか?

Select 
isnull(Name, "Select Name from Table where Date = GetDate() - 1")
,Date
From Table
4

1 に答える 1

0

これを試してください[vは元の値、v2は計算された新しい値]:

DECLARE @table table(v varchar(10), d varchar(10))
INSERT INTO @table 
SELECT 'Cat','1/1/2012' UNION
SELECT 'Dog','1/2/2012' UNION
SELECT 'Fish','1/3/2012' UNION
SELECT NULL,'1/4/2012' UNION
SELECT 'Goat','1/5/2012' UNION
SELECT NULL,'1/6/2012' UNION
SELECT 'Sheep','1/7/2012'


SELECT A.v, A.d, ISNULL(A.v,B.v) V2
FROM @table A
OUTER APPLY (   SELECT TOP 1 *
                FROM @table 
                WHERE d < A.d
                AND v IS NOT NULL
                ORDER BY d desc) B
order by d
于 2012-08-22T16:49:04.073 に答える