私のテーブルは次のようになり、のが表1にそれを呼びましょう:同じ列を複数回SQL WHERE節ですか?
ID | value | formID
----------------------
25 Business 1001
16 John 1001
5 2/20/17 1001
30 FormXYZ 1001
25 Nursing 2345
16 Sam 2345
5 1/15/17 2345
30 FormXYZ 2345
25 Tech 4500
16 Sam 4500
5 2/1/17 4500
30 FormC 4500
IDは、そのフィールドの一意の識別子です:
25 =省
16 =名前
5 =日
30 =フォーム名、複数の異なるフォームがあり、FormXYZデータが必要です。
フォームIDは、フォームが3つのフィールドが含まれ、提出された各フォームの一意のIDです。
Department | Name | Date
Business John 2/20/17
Nursing Sam 1/15/17
は、私が営巣し、CASEは、右に動作していないようでした、しようとしているものです:私は可能であればこのような何かを探して、すべてのデータを取得し、単一のクエリを記述しようとしている
私はここに投稿しています。私はここから始めました。
select
formID,
max(case when ID=25 then value else null end) as Department,
max(case when ID=16 then value else null end) as Name,
max(case when ID=5 then value else null end) as Date
from Table1
group by formID
これが生成します。SQLでデータを転置する
SELECT value
FROM Table1
WHERE ID = '25'
UNION ALL
SELECT value
FROM Table1
WHERE ID = '16'
UNION ALL
SELECT value
FROM Table1
WHERE ID = '5'
UNION ALL
SELECT value
FROM Table1
WHERE ID = '30' and value = 'FormXYZ'
あなたのデザインはリレーショナルではないので、なぜSQLのような「リレーショナル」ツールを使って結果を得るのですか?なぜアプリケーション言語を使用しないのですか? –
テーブルは残念ながらどうですか?私はそれを変更することはできません。アプリケーションがエントリを検索するのに時間がかかりすぎて、すべての単一の「ID」(そして私の実際のフォームでは12個)を検索する必要があるため、ちょっと整理されたビューを取得しようとしています。 – Nestalna