SQL文でGROUP BYを使用して複数の行から1行を作成しようとしています。アクセス:複数の行を1つにまとめますが、テキストを表示
問題は、私が扱っている生データには、必要のないデータが含まれており、すべてのフィールドにテキスト文字列が設定されています。例えば
、
ID COURSE
01 Baking 101
01 Driving 102
01 Writing 101
02 Baking 102
02 Writing 101
私は、唯一の 'ベーキング' と '運転を' 'ライティング' を必要としません。だから私はこのように上げるために自分のデータが欲しい:私は、彼らは、関連するキーワードが含まれている場合見て、レコードを選択しています
ID Baking Driving
01 Baking 101 Driving 102
02 Baking 102 -
を私の生のデータソースは、ないものだけを全てのコースのコースの履歴が含まれているため、私が心配していること。また、コースのスペルは同じコースで異なる場合があります。
現在のところ、IIf文を使用して、キーワードが存在する場合は1を返し、存在しない場合は0を返します。私はそれと私のID(個人識別子)をGROUP BYで合計します。だから、私のテーブルはこのように少し変わった。レコードは、特定のキーワードが含まれている場合は、まだ単一の行にすべての関連レコードをグループ化し、切り捨てながら、私のクエリは、レコードを表示するために、私は希望何
ID Course1 Course2 Course3 Course4 Course5
01 1 0 0 1 0
02 0 1 1 0 0
です。
GROUP BY関数では、テキスト文字列の処理方法がわからないため(つまり、表示するレコードがわからないため)、affを生成することができませんGROUP BYを許可するための数値。数字をテキスト(つまり、私のIIfステートメントを満たすテキスト)に変換する方法はありますか?
データの実際のサンプルを提供できないことをお詫びしますが、残念ながら共有することはできません。
編集:
1.Baking 101 Cse
2.Baking 101 Course
3.Baking-101 Cse
だから今のように、私のSELECT文は、この
SELECT Courses.CourseName,
Sumiif((Courses.CourseName Like "*Baking*",1,0) AS BAKING
FROM Courses
GROUP BY Courses.PersID
のようなものです:
私は綴りが変化すると言ったときに私が意味することは、このようなものです私は1つ以上のコースを扱うので、これはかなり簡単です。
私が直面している問題は、IIf関数の結果ではなく、実際のデータをフィールドに表示したいということです。 1の代わりに、私はコースの名前を見たいと思う。しかし、私はまた、私は集約関数を使用する必要がある私の主キーでグループ化する必要があります。私は文字列でこれを行うことができる集約関数を認識していません。
ダミーデータであっても、実際に表示したいクエリと結果を投稿できますか?これは、あなたが望むものをさらに理解するのに役立ちます。 –
あなたの現在の質問には、_Baking 101_と_Baking 102_の関係を見る方法がないので、それらが同じ列に属することを知る方法はありません。すべての列名とその列に属する値を持つ表がある場合は、これをピボットで簡単に解決できます。それは現状では解決できません。 –
「スペルが変わる可能性がある」とは何ですか?数字の接尾辞の変更だけですか?コース名とセクションは本当に別々のフィールドにあるべきです。ただし、文字列操作関数を使用してクエリ内のパーツを解析します。 – June7