現在ACCESS2000で使用しているモジュールを、SQLServer上で動かすことになり、その移植作業で難航しております。皆さんのお知恵をお借りしたく思います。
具体的には重複レコードのあるテーブルから重複を省いたテーブルを作るという処理で、FIRST関数がSQLServerで使えなくて困っています。以下はACCESSでのSQL文です。
INSERT INTO tbl2(fld1,fld2,fld3) SELECT (tbl1.fld1),
First(tbl1.fld2) AS fld2の先頭,
Count(tbl1.fld3) AS カウント
FROM tbl1
GROUP BY tbl1.fld1;
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
これでいけるでしょう。
INSERT INTO tbl2(fld1,fld2,fld3)
select Q.fld1,(select top 1 fld2 from tbl1 T1
where T1.fld1 = Q.fld1 order by T1.キーとなる項目),Q.count_fld3
from (select fld1,count(fld3) as count_fld3 from tbl1 group by fld1) Q
No.3
- 回答日時:
#2です
まず重複のないように tbl2 に出力し、その後集計関数を使用して UPDATE するのではまずいのでしょうか。
また最初から GROUP BY でやるとして First ではなく Min などでは駄目ですか?
この回答への補足
レコード件数が数万件あるため、insertとupdateを分けてしまうと、ユニークなフィールドを使って数万回updateしないとならないために1つのSQL文で処理をしようとしています。
Min関数は最小値を求めるため、期待値の先頭の値は返してくれません。
No.2
- 回答日時:
INSERT tbl2(fld1)
SELECT (tbl1.fld1),
FROM tbl1 LEFT JOIN tbl2 ON tbl1.ID = tbl2.ID
WHERE (((tbl2.ID) Is Null));
ではどうでしょうか?
この回答への補足
補足いたします。tbl2はtbl1に対するワークテーブルです。
『tbl1のレコードの中で、fld1が重複しないようにしてtbl2へレコードを移す。また重複のあるレコードについては、その重複する数をカウントしてfld3にセットし、fld2については最初に出てくるレコードの値をtbl2にセットする。』
ということを実現したいと思っています。
質問文がつたなく、わかりづらいと思いますが、よろしくお願いします。
No.1
- 回答日時:
この回答への補足
補足させていただきます。ACCESSではGROUP BY句を使った場合に集計をかける関数が11種類ありますが、SQLServer上では5種類しかないように思われます。今回はその5種類にないFirst関数を使って集計をかけている場合についての質問です。
質問文が拙くご迷惑おかけしますが、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- クラシック 楽器の省略記号について、 2 2023/03/30 18:29
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- 作詞・作曲 オススメのDTMソフトありますか?(MacBook) もちろん作る曲のジャンルによりますが。 Hip 1 2023/04/08 17:42
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- オープンソース Pythonのコードをexe化 1 2023/07/03 08:01
- 数学 単振り子とルンゲ・タック法 1 2022/07/15 00:05
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
重複していないレコードの抽出...
-
int(11)の(11)とは何を意味して...
-
IDの採番について
-
差し込み後、元データを変更し...
-
外部参照してるキーを主キーに...
-
エクセルVBAコードで教えて下さ...
-
フィルターかけた後、重複を除...
-
SELECT 文 GROUP での1件目を...
-
1、Rstudioで回帰直線を求める...
-
1日に1人がこなせるプログラム...
-
エクセルで最後の文字だけ置き...
-
SQLで特定の項目の重複のみを排...
-
カーソル0件の時にエラーを発生...
-
止まなーい雨はない でもお前に...
-
商品番号を入力すると、商品名...
-
EXISTSを使ったDELETE文
-
INSERT文でフィールドの1つだ...
-
Oracleのデータ型、NUMBERについて
-
SQLについて教えて下さい with(...
-
列のヘッダーを含めるのをデフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
重複していないレコードの抽出...
-
int(11)の(11)とは何を意味して...
-
縦持ちになっているデータを横...
-
合計点順にソートかつ同一人の...
-
IDの採番について
-
サブクエリ:各カテゴリ内で最...
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
-
外部参照してるキーを主キーに...
-
SELECT 文 GROUP での1件目を...
-
for whichの使い方
-
SQLで特定の項目の重複のみを排...
-
INSERT文でフィールドの1つだ...
-
過剰なオブジェクト指向脳から...
-
カーソル0件の時にエラーを発生...
-
datetime型でNULL値を入れたい。
-
SQL Date型の列から年月だけを...
-
速度が低下し無効になったアド...
-
副問合せの書き方について
おすすめ情報