2

私の質問は思ったほど明確ではなかったと思います。私の問題を説明するために最善を尽くします:

顧客と日付のテーブルがあります。LAG 関数を使用して以前の日付を取得し、日付に「穴」があるかどうかを調べました。

    Customer        Prev_date                       Date                    Missing_ind
    1               01dec2004:00:00:00              01jan2005:00:00:00             0
    1               01jan2005:00:00:00              01feb2005:00:00:00             0
    1               01feb2005:00:00:00              01apr2005:00:00:00             1
    2               01dec2004:00:00:00              01jan2005:00:00:00             0
    2               01jan2005:00:00:00              01feb2005:00:00:00             0
    2               01feb2005:00:00:00              01mar2005:00:00:00             0
    2               01mar2005:00:00:00              01jun2005:00:00:00             2
    .
    .
    .
    .

ご覧のとおり、3 行目では顧客 1 (mar2005) の 1 か月が不足しており、7 行目では顧客 2 (apr2005、may2005) の 2 か月が不足しています。

顧客ごとに不足している月数を示すインジケーターがあります (Missing_ind)

私がする必要があるのは、テーブル内のすべての顧客の不足している月を、正確なテーブルにするか、新しいテーブルに行を挿入するかを完了することです。

どうすればそれができますか?

助けてくれてありがとう、

ギャル。

4

2 に答える 2

1

これは実際には別の質問であり、解決するのは非常に簡単です。

data have;
input Customer (prev_date date) (:datetime17.);
format prev_date date datetime19.;
datalines; 
    1               01dec2004:00:00:00              01jan2005:00:00:00            
    1               01jan2005:00:00:00              01feb2005:00:00:00            
    1               01feb2005:00:00:00              01apr2005:00:00:00            
    2               01dec2004:00:00:00              01jan2005:00:00:00            
    2               01jan2005:00:00:00              01feb2005:00:00:00            
    2               01feb2005:00:00:00              01mar2005:00:00:00            
    2               01mar2005:00:00:00              01jun2005:00:00:00   
;;;;
run;
data want;
set have;
missing_months = intck('dtMonth',prev_date,date)-1;
run;
于 2013-08-11T13:00:57.900 に答える