
できればSQL文で作りたいと思っています。
表1
行1 行2
== ==
1 A
1 B
1 C
2 A
2 D
行1で同一の値のものは10個しかないと決まっています。
(つまり行1=1のものは10列まで)
これを次のように表示したいと思っています。
行1 行2 行3 行4
== == == ==
1 A B C
2 A D
Access+SQL*Serverを使っています。このようなViewをつくるSQLが発行できればベスト。関数とか使ってでもなんとかできないでしょうか?
SQLの実行結果のレコードを順番に配列に入れるとかしかいと無理でしょうか?
レコード結果はFirst,Lastを使って先頭と最後だけは取り出せるのですが、2番目~9番目も取り出す関数があったら、それをSQLに組み入れるだけで済むのですが。
どうぞ、よろしくお願いします。m(○)m
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
行と列が通常の呼称と逆ですね
行2の文字コード順に並べるということでよければ
TRANSFORM First(行2)
SELECT 行1
FROM 表1
GROUP BY 行1
PIVOT "行" & DCount("*","表1","行2<='" & [行2] & "' and 行1=" & [行1])+1;
No.3
- 回答日時:
行1も行2もテキスト型なら、
TRANSFORM First(行2) AS 行2の先頭
SELECT 行1
FROM 表1
GROUP BY 行1
PIVOT "行" & DCount("*","表1","行1='" & [行1] & "' And 行2<='" & [行2] & "'")+1;
では。
No.2
- 回答日時:
私はこのような場合、クロス集計クエリーを使いします。
(1)テーブル「表1」に項目「列見出し」を作成します。(テキスト型)
(2)次のファンクションを実行して「列見出し」をセットします。
======================================================
Public Function FNT_列見出し()
Dim DB As Database
Dim R As Recordset
SQL = "SELECT * FROM 表1 ORDER BY 行1, 行2"
Set DB = CurrentDb
Set R = DB.OpenRecordset(SQL, dbOpenDynaset)
If R.EOF = False Then
WK_行1 = R![行1]
cnt = 0
Do Until R.EOF
If WK_行1 = R![行1] Then
cnt = cnt + 1
Else
cnt = 1
WK_行1 = R![行1]
End If
R.Edit
R![列見出し] = "行" & cnt + 1
R.Update
R.MoveNext
Loop
R.Close
End If
End Function
======================================================
(3)次のクロス集計クエリーを表示すると結果が得られます。
==================================================
TRANSFORM First(表1.行2) AS 行2の先頭
SELECT 表1.行1
FROM 表1
GROUP BY 表1.行1
PIVOT 表1.列見出し;
==================================================
以上です。
参考になればうれしいです。
No.1
- 回答日時:
Access上なら
TRANSFORM First(表1.行2) AS 行
SELECT 表1.行1
FROM 表1
GROUP BY 表1.行1
PIVOT 表1.行2;
でクロス集計で似たような感じでできますがこれじゃダメなんですよね。
>先頭と最後だけは取り出せるのですが、2番目~9番目も取り出す関数
SELECT 行1,行2 FROM 表1 ROWNUM <=9
で先頭から9行目まで取得
ありがとうございます。
この方法だと、表1で違うデータの分だけフィールドがついてしまいます。
つくりたいのは、フィールド数は10個と決まっています。なんとかなりませんか?
ROWNUM でも、表1で行1でグループした中からselectしその結果のレコードの2番目とか取りたいという意味なので、これも使えませんでした。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) EXCELの「接続」のSQLのコマンド文字列にて、セルから任意の数値を利用したい 2 2023/03/09 16:43
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- SQL Server これをSQL文で出来るでしょうか? 1 2023/03/26 02:16
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Oracle Oracleですがsqlで質問です。 サブクエリ内で番号というカラムで昇順の1レコード目を取得したい 3 2023/05/22 10:02
- MySQL #1062 - '0' は索引 'PRIMARY' で重複しています。とでています。 1 2023/01/01 06:13
- Excel(エクセル) エクセルでIF関数中にIFERROR関数を使いたいのですが???? 5 2022/04/08 13:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
他のシートの検索
-
SQLにてフィールドを+1
-
INDIRECT関数の代替方法は?
-
ACCESS SQLのデータ変換。
-
アクセルでのクエリ
-
データを同データが並ばないよ...
-
カラム表示の幅
-
アドレスブックの登録について
-
sql文でのage sageシステム
-
カラムの値を、条件により動的...
-
MySQL区切った文字列で外部結合...
-
アーメス・パピルスについて・...
-
データ型による検索速度の違い...
-
テーブル設計について
-
MySQLのTimestamp型の使い方
-
社名でデータ抽出できる検索シ...
-
ENUM列に列挙されていない値を...
-
3テーブルより抽出のSQL文
-
効果的なindexの設定方法
-
MySQL 配列もどきを条件式に
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
INDIRECT関数の代替方法は?
-
【Transact-sql】 where条件、i...
-
BULK INSERT時のNull許容について
-
Accessの「IIF」に相当するSQL...
-
自分自身のテーブルを参照して更新
-
WHERE句で結合。INNER JOINとの...
-
Accessで複数(3以上)...
-
sqlite3でrowid以外にid必要で...
-
CSV fileを指定してSQLへimport
-
WHERE句の速度について
-
create tableのフィールド名
-
SQLiteで「UPDATE table1 SET c...
-
SQLの書き方
-
Oracleの制約について
-
SQL分のコツ
-
数百行の複数列を1列にしたい。
-
列を行に表示する方法は?
-
SELECT文で、指定カラム以外の...
-
DBの定義のサイズを大きくし過...
-
一部のカラムでdistinctし全て...
おすすめ情報