• ベストアンサー

助けて下さい SQL

グーグルのビッグクエリで SQLを使ってます。 データ型の日付でmax関数を使って ユーザーの直近日を出したいのですが 直近日が上手く出ずにいます。 複数日でる状態です。 原因が分かりません。 直近日を出す方法を教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

> ユーザーごとの直近日を出したいのです。 ユーザーごとに直近日を出したのであれば、 金額(amount)も出しているのが ユーザーIDごとにグループ化することの邪魔をしています。 amountを外しましょう。 select max(deta)as deta,id from tableA group by id;

putiabu
質問者

お礼

ありがとうございます。 上手く出来ました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

回答No.7

ここを参考にするとできました。試してみてください https://lightgauge.net/database/sqlserver/1672/

全文を見る
すると、全ての回答が全文表示されます。
回答No.5

version 解りませんが、postgresですよね? 私の環境で同じことをすると、エラーになります。MAX関数はgroup byの集約として利用してください。とのメッセージです。 複数でるのは、別の項目を指定しているため、それぞれで日付が集約されずすべての日付(出力されている)が最大日付と認識され出力されているのではないかと推測されます。ためしに、select MAX(date) from tabelname だけで指定してみてください。おそらく1件のみ出力されるかと思います。 仮に、最大の1件のレコードのみ出力される場合には、日付をソートして プログラムにて最大のレコードを抽出しなければならないのかと思います。 参考に以下のurlでも同じようなことを実験してます。 http://pentan.info/sql/max_record.html

putiabu
質問者

お礼

質問が足りなかったですね。すみません。 ユーザーごとの直近日を出したいのです。

putiabu
質問者

補足

MAX関数はgroup by 書き損じてますが MAX関数はgroup byを使った上で 複数レコードが出てます。

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

実際利用しているsqlとその結果、およびその付近のデータ(日付ソートしたもの)を提示してください。質問の内容が曖昧で答えられないと思います。

putiabu
質問者

補足

tableAのカラム deta:日付 id:ユーザーid amount:金額 select max(deta)as deta, id, amount from tableA 結果 data| id|amount| 0303|1|1000 0304|1|200 0305|1|100 0302|2|1000 0303|2|500 と出ます

全文を見る
すると、全ての回答が全文表示されます。
  • aa5462
  • ベストアンサー率40% (20/49)
回答No.3

複数件取得されてしまうのは何か原因があると思うのですが、 もう少し情報が欲しいです。 実際のSQLとか。

全文を見る
すると、全ての回答が全文表示されます。
  • agehage
  • ベストアンサー率22% (2544/11322)
回答No.2

さらにorder by 日付項目A limit 1 と付け加えるとどうでしょう?

全文を見る
すると、全ての回答が全文表示されます。
  • aa5462
  • ベストアンサー率40% (20/49)
回答No.1

一番単純なSQLであれば select max(日付項目A) from テーブルA これでテーブルAの日付項目Aの最大値が取得できます。

putiabu
質問者

補足

それが出来ないから困っていて 原因が分からないんです。 複数レコードが出てくるんです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQLがうまくいかない!

    SQLがうまくいかない! SQLについて、調べたんですが、わからないので教えてください! last_year(日付データ)関数 と round(日付データ,'書式')関数についてのご質問です。 select last_year('2007-01-01') from 表名; とやるとうまくいくのに 、 select round('2007-01-01','month') from 表名; とやるとエラーになってしまいます。 last_year関数では、'2007-01-01'は日付データとして扱われるのに、round関数では日付データとして扱われないのはなんででしょう? ちなみに、 select round(to_date('2007-01-01','yy-mm-dd'),'month') from 表名; とやるとうまくいきます・・・SQLの仕様ですか!? どなたか教えてください!宜しくお願い致します。

  • ADOからAccess固有のSQLを使うに

    お世話になります。 現在困っていることがありますが、Accessのフォームで作った簡易システムの保守および機能追加を行っているのですが、Accessの固有のSQL(独自のクロス集計関数やワイルドカードが%ではなく、*になる等)をADOから呼び出すとデータが取り出せません。 固有形式のSQLを使っているクエリを使うとデータ数が0になっていたので、原因はすぐ分かりました。 しかしすでに構築されているSQLをすべて直すのは少し現実的ではなく、バグを誘発する、クロス集計関数が使えないなどの理由で当然のごとく却下されました。 AccessのVBAを使ってコーディングしてる方は、Access固有SQLをプログラムで使う(または使っているクエリを参照する)場合、どのような方法を使っているのでしょうか? どうぞよろしくお願いします。

  • SQL2005 調和平均

    SQL Server 2005で、調和平均を使うクエリを作りたいのです。 ExcelならばHERMEAN関数を使えば一発で出ますが、SQLにはないですよね? CREATE FUNCTIONを使うか、クエリだけでいけるのかよくわかりません。 自分でクエリを書いてみたのですが、なにぶん初心者で、データがゼロの場合にエラーになったりしてうまくいきません。 どうすれば一番簡単に作れるでしょうか。

  • AccessのSQL

    次のように同じ日付の中に複数の点数がある場合、 各日の最大点だけを表示するクエリを作りたいのですが、どのようにSQLを書けばよろしいでしょうか? SELECT MAX(点数) , 日付 FROM テーブル; ↑のような文では、エラーになってしまいました・・・ --------------------- 点数 日付 --------------------- 12 2005/11/22 23 2005/11/24 74 2005/11/24 20 2005/11/30 52 2005/11/30 --------------------- 以上、よろしくお願いいたします。

  • SQL MAX関数を検索条件にする。

    SQL MAX関数を検索条件にする。 わかる方がいれば助けてください。 下記のようなデータのテーブルあります。   ID        品番      金額          日付 OUTLET 210   00182-1080   5600         20090915 OUTLET 214  00182-1080   5600         20090916 OUTLET 217  00182-1080   5600         20090917 OUTLET 50  00182-1080   5600         20090609 OUTLET 437  00191-1082   3300         20100305 BLK09SS703  00191-1082   5500         20090703 OUTLET 141  00191-1082   5500         20090717 OUTLET 170  00191-1082   5500         20090806 このテーブルデータの各品番について最新日付のデータのみを出力したいのですが、 方法がわかりません。group byでHAVING検索なども試しましたがうまくいきませんでした。 <抽出したいデータ>   ID        品番      金額          日付 OUTLET 217  00182-1080   5600         20090917 OUTLET 437  00191-1082   3300         20100305 どなたかお願いします。 前にも同じような質問をさせていただきましたが、 解決できずにこまっています。

  • [ACCESS97]SQLの書き方

    グラフのレコードソースにクエリ・SQLを使用しています。データ入力チェックに使おうと思っています。妙なデータがはいった場合、グラフが乱れるのではないかと。 ソートは日付でしています。 それで、100レコードずつを順番に表示していきたいのですが、top値 だと最初からいくつ、、としか指定できません。これを、レコードの途中の任意の位置から取るにはどうしたらいいのでしょうか? IDとかのようにユニークな値でソートしているのであれば、大小関係で一発ですが、同じ値がいくつも存在する日付なもので困っています。 日付でソートしたものを配列に入れる、もしくは一度テーブルに書き出す等も考えているのですが、SQLでできたら助かります。 よろしくお願いします。

  • (2)-SQL文の書き方を教えてください。

    table項目:名称、日付、数量。 以上のtabelから以下のクエリーをつくりたいです: クエリー項目:名称、当日数量、当月数量。 日付の値は、フォーム上で指定する。 具体的に:フォーム上日付欄に2003/10/01と2003/10/30を指定し、実行すると、当日数量は、2003/10/30その日の合計数が出る。当月数量に指定された10/01から10/30までの数字の合計がでる。 今、片方だけ条件のSQL文を書けるですが、二つ条件のSQL文がとても難しい。 そうゆうSQL文を教えていただけませんか? よろしくお願いいたします。

  • sqlでの誕生月検索の仕方を教えてください

    WindowsXP EXCEL2003 ACCESS2000 を使用しユーザーフォームのテキストボックスへ誕生月を入力しACCESSのフィールド誕生日(日付/時刻型)から指定の月データのみを検索しようとしていますがうまくいきません。 ちなみに、ACCESS単体でのクエリ検索は Like "*/10/*"で正常に動作しますが、ユーザーフォームからのsqlでは正常に動作しません。 sTanzyou="10"'たとえば10月 Sql = "select * from 顧客データ where 誕生日 like #" + "*/" + sTanzyou + "/*#" Set RS = New ADODB.Recordset RS.Open Sql, gcn, adOpenKeyset, adLockOptimistic また、*のかわりに_を使用してもだめでした。BETWEENも正常に動作しませんでした。 どなたかご教示願えませんでしょうか。 よろしくお願いします。

  • ACCESSでのSQL文

    ACCESS2000を使用しています。 クエリをデザインビューから作成し、SQLビューで確認すると、例えば、 SELECT [test].[日付],[test].[トップ] FROM test; というような文章が作成されますが、ここで手動でSQL文に SELECT 日付,トップ FROM test; というふうに変更して実行した場合、[]を外したことによってエラーとなってしまう列が発生します。このエラーになる列とならない列が発生する原因をどなたかご存知ないでしょうか? ACCESSをデータベースとして他ツールによってデータを引き出すんですが、SQL文は自動作成されるので手で[]を入力しなければならないんです。 以上、よろしくお願いします。

  • 結果を横に表示するSQLを教えてください

    SQL初心者です。 以下のような縦に表示されるクエリを横向きに表示する際のクエリを教えて頂けないでしょうか。 現在のクエリ結果 日付   種類   合計 4月1日 りんご 10 4月1日 みかん 20 4月2日 みかん 15 4月2日 りんご 30 4月3日 みかん 40 4月3日 りんご 5 ※クエリ詳細 select 日付,種類, sum (数量) as 合計 from テストテーブル group by 日付,種類 order by 日付 ※元データ 元データ 日付   種類   数量 4月1日 りんご 5 4月1日 りんご 2 4月1日 りんご 3 4月1日 みかん 10 4月1日 みかん 3 4月1日 みかん 7 上記を以下のような結果にしたいです。 種類  4月1日 4月2日 4月3日 りんご 10   30   5 みかん 20   15   40 わかりにくい説明で申し訳ございません。 どなたかご回答頂ければ幸いです。 よろしくお願い致します。

ネットワークに接続できない
このQ&Aのポイント
  • WIFIボタンは点灯しているが、ネットワークに接続できない状況です。
  • 購入時に付属のCDが紛失しており、手元にはありません。
  • どうすればネットワークに接続できるようになるのでしょうか?
回答を見る