2017-05-17 1 views
0

私はこのようなMS Accessのテーブルを持っている:SQL文の行

列は次のとおりです。

-------------------------------------- 
| *Date* | *Article* | *Distance* | Value | 
--------------------------------------- 

日、条との距離は、主キーであるため、それらの組み合わせは常に一意です。

---------- 
| *Date* | *Article* | Value from Distance 0| Value Dis. 1|...|Value Dis. 27| 
---------- 

私は本当にこのタスクのためのSQL文を知らない:

列の距離は、私はこのようなテーブルにこのテーブルを変換する必要が0から27

に離散的な値を持っています。私は非常に効率的なExcelマクロを書いたのですが、非常に効率が悪く、完了に数時間を要する非常に高速な解決策が必要でした。データ量が10倍になったので、このマクロはもう使用できません。

答えて

0

あなたは、次のピボットクエリ試すことができます。アクセスがCASE表現をサポートしていないことを

SELECT 
    Date, 
    Article, 
    MAX(IIF(Distance = 0, Value, NULL)) AS val_0, 
    MAX(IIF(Distance = 1, Value, NULL)) AS val_1, 
    ... 
    MAX(IIF(Distance = 27, Value, NULL)) AS val_27 
FROM yourTable 
GROUP BY 
    Date, 
    Article 

注意が、それはの形式を取りIIF()と呼ばれる機能を提供します:

IIF(condition, value if true, value if false) 

基本的に他のRDBMSではCASEと同じように動作します。

+0

ありがとうございます! – DiKo