2016-11-03 2 views
1

テーブルには1行と複数の列しかありません。私は1列と多くの行だけを返す必要があります。 SAS SQL経由で転置することは可能ですか?後SAS SQLを使用して1行と複数の列を持つテーブルを転記

column1 column2 column3 column4 
    1  2  3  4 

::前

column 
    1 
    2 
    3 
    4 
+0

単純な解決策ではありません。 SQLでは変数リストのショートカットが許可されていません。 proc transposeを使うべきです。あなたがSQLを主張する場合は、最初に列の数を決定してから、ユニオンステートメントを動的に生成するマクロが必要になります。私はそれが個人的に努力する価値があるとは思わない。 – Reeza

答えて

0

PROC TRANSPOSEを使用しない理由は、PROC TRANSPOSEという名前の列でもいくつの列がデフォルトですべての数値列を転置するかを知る必要はありません。

proc transpose data= out= ; 
    run; 
+0

すべてのカラムが数字ではありません。 – Keliimek

+1

SASはすべてを文字に変換します。 VAR _ALL_を使うことができます。 –

0

あなたはSAS SQL(他のSAS PROCとは反対に)言及しているので、それがあれば少し冗長になりますけれども、これは、ソリューションです。

PROC SQL; 

    SELECT column1 AS column FROM table 
    UNION ALL 
    SELECT column2 AS column FROM table 
    UNION ALL 
    SELECT column3 AS column FROM table 
    UNION ALL 
    SELECT column4 AS column FROM table; 

    /* Add for each column */ 

QUIT; 

これは単純に各列を結合(スタック)します。

+0

しかし、私は知らない、どのように多くの列にテーブルが含まれて...私はこれを使用することはできません、いくつかの別のソリューションが存在する? – Keliimek

+0

テーブルにいくつの列があるのか​​分かりませんか? – Nicarus

+0

このスクリプトは他のテーブルではユニバーサルでなければならず、各テーブルには異なる数のカラムが含まれているため – Keliimek

関連する問題