accessユーザーです
sqlserverに組み替えているなかでaccessでは今までグループ集計をクエリーで作成していました
select first(フィールド1) as AA,last(フィールド2) as BB from FFテーブル group by フィールド3
ところがsqlserverにはfirstとlastがありません??
どのようにすればよいのかご教授おねがいします
firstとlastはない場合、ほかの方法で結果がでればどの方法でもかまいません。
よろしくおねがいします
No.2ベストアンサー
- 回答日時:
こちらの情報によると、SQLServerにはfirst、lastはありません。
また、一般的にデータベースでは登録したデータの順番は記録しません。
例えば、Order Byで並び順を指定せず、SELECT文でレコードを選択した場合、
その並び順は不定になります。
(仮に登録順で表示されたとしても、それは保障されていません。)
登録順で並べたり、最後に登録したデータを取り出す等は出来ません。
登録順での操作が必要な場合、フィールドを追加し、
オートナンバー等で何らかの記録を残しておく必要があります。
言ってしまえば、Accessのfirstとlastが特殊なんです。
Access以外では使えないと思って頂いてよいと思います。
こちらの情報なども、参考にどうぞ
http://blackbird.cocolog-nifty.com/progtalk/2004 …
http://support.microsoft.com/default.aspx?scid=k …
>firstとlastはない場合、ほかの方法で結果がでればどの方法でもかまいません。
オートナンバーのフィールドを追加し、IDとします。
------------------------
SELECT F1.フィールド1, L2.フィールド2, F1.フィールド3
FROM
(
SELECT X.フィールド1, X.フィールド3
FROM FFテーブル AS X INNER JOIN
(
SELECT Min(F.ID) AS FirstID, F.フィールド3
FROM FFテーブル AS F
GROUP BY F.フィールド3
) AS F
ON F.FirstID = X.ID
) AS F1
INNER JOIN
(
SELECT X.フィールド2, X.フィールド3
FROM FFテーブル AS X INNER JOIN
(
SELECT Max(L.ID) AS LastID, L.フィールド3
FROM FFテーブル AS L
GROUP BY L.フィールド3
) AS L
ON L.LastID = X.ID
) AS L2
ON F1.フィールド3 = L2.フィールド3;
------------------------
長いですが、1つのSQL文です。(^^;
これで期待どうりの結果になってるでしょうか?
(Accessで動作確認しましたが、SQLServerでは確認してません。)
ありがとうございました
今日、私も考えてフィールドIDはオートナンバーですのでmax(フィールドID)として別のファイルにオートナンバーではないフィールドID2を作成しinsertで別のファイルのID2と基のオートナンバーIDをkeyにしてフィールド2をupdateすればイメージどうりにできました
返信の記述も明日試してみますありがとうございました
今後ともご教授よろしくお願いします
No.3
- 回答日時:
#1回答者です。
#2回答者さんの回答を見て、私もaccessの仕様に驚きました。階層DB的な発想ですね。
ところでSQL Serverのバージョンは、何でしょうか?
#2回答者さんの使用している「select ~ from (select ~ from ~ ) as 別名」は、インラインビューというもので、SQL Server 2000では未サポートです。
http://www.microsoft.com/japan/sql/prodinfo/comp …
もし、SQL Server 2005なら、#2さんのSQLに加え、以下のような分析関数という機能を使うことでも実現可能です。
select フィールド1,フィールド2,F.フィールド3
from
(select
rank() over(partition by フィールド3 order by id) as F_row,
フィールド1,フィールド3
from FFテーブル) as F,
(select
rank() over(partition by フィールド3 order by id desc) as L_row,
フィールド2,フィールド3
from FFテーブル) as L
where F.フィールド3=L.フィールド3 and F_row=L_row and F_row=1;
返事送れてすみませんでした
バージョンはSQL Server 2005standerd版ですので
早速ご指摘どうりにやってみます
ありがとうございました
今後ともよろしくおねがいします
No.1
- 回答日時:
FIRST、LASTがACCESSではどういう機能なのかを説明するか、基の表と得たい結果を示してくれれば、回答が得られやすいと思います。
また、SQL Serverのバージョンも、できれば示してください。
firstとlastは、minとmaxで置き換えられるのではないでしょうか?
select min(フィールド1) as AA,max(フィールド2) as BB
from FFテーブル group by フィールド3
この回答への補足
早速返事ありがとうございます
たとえばlast(フィールド2) as BBのフィールド2の内容がアルファベットで文字の場合なんです!groupのフィールド3が数字であったとして
フィールド2-----------フィールド3------------------
----A---------------------2------------------------
----C---------------------2------------------------
----B---------------------2------------------------
この場合MINですとAになってしまいますMAXだとCになってしまいます
ほしいのは最後のBです
ありがとうございました
今日、私も考えてフィールドIDはオートナンバーですのでmax(フィールドID)として別のファイルにオートナンバーではないフィールドID2を作成しinsertで別のファイルのID2と基のオートナンバーIDをkeyにしてフィールド2をupdateすればイメージどうりにできました
返信の記述も明日試してみますありがとうございました
今後ともご教授よろしくお願いします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あるあるbotに投稿したけど採用されなかったあるある募集
あるあるbotに投稿したけど採用されなかったあるあるをこちらに投稿してください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
SELECT 文 GROUP での1件目を取得
SQL Server
-
group byで最後のレコードを抽出したい
MySQL
-
SELECTで1件のみ取得するには?
Oracle
-
-
4
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
5
VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?
Visual Basic(VBA)
-
6
BCPでCSV内の文字列をテーブルのDatetime型カラムに取り込む方法
その他(データベース)
-
7
Accessのリンクされたテーブルでリンク先ではデータを変更出来ないようにするには?
Access(アクセス)
-
8
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
9
VBA プロシージャの名前の取得
その他(Microsoft Office)
-
10
ACCESSでの改行コード
その他(データベース)
-
11
Access→Excelへエクスポートすると日付の表示形式が変化する
Excel(エクセル)
-
12
データベースのINT型項目にNULLはNG?
MySQL
-
13
TCP/IP通信時のサーバーからの受信
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
差込印刷での全角表示について...
-
エクセルにおける「フィールド...
-
ACCESSでフィールドに-(ハイフ...
-
クエリで割り算する方法を教え...
-
Accessのハイパーリンクをクリ...
-
ACCESSでフィールド名の変更(...
-
実行時エラー '3464': 抽出条件...
-
海外ドラマ『プリズン・ブレイ...
-
フィールドの更新がない
-
エクセルデータをワードで差し...
-
奇数・偶数ページごとに差し込...
-
ACCESSのデータに自動で半角ス...
-
Access 西暦を和暦へ一括変換...
-
Access クエリ上で表示させた割...
-
【Access】レポートでテキスト...
-
Accessの日本語フィールド名
-
アクセスのクエリでパラメータ...
-
ACCESS 重複データを1...
-
アクセスのレポートがうまく印...
-
ToV、サブイベント・犬マップの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
差込印刷での全角表示について...
-
エクセルにおける「フィールド...
-
エクセルデータをワードで差し...
-
レコード数のカウント
-
ACCESSのデータに自動で半角ス...
-
フィールドの更新がない
-
Word差し込み印刷のハイフン(...
-
Acsess アクセス のクエリで...
-
クエリで割り算する方法を教え...
-
ACCESS 重複データを1...
-
実行時エラー '3464': 抽出条件...
-
ACCESSで条件によってフォーム...
-
Accessのハイパーリンクをクリ...
-
クエリーで、全角混じりデータ...
-
Null値を並べ替えで・・・
-
Access 複数のフィールドの平均...
-
「Access2007」でレポートが作...
-
アクセスのクエリでパラメータ...
-
ワードファイルの文字数制限ロ...
-
sqlserverにはグループ集計のfi...
おすすめ情報