- ベストアンサー
2件目のデータを取得する
お世話になります。 データベース:SQLSERVER2005 テーブル名:URIAGE_TABLE 項目:URIAGE_CODE、URIAGE_DATE、URIAGE_KINGAKU 上記テーブルの、2件目のデータのみを取得 するSQL文をを知っている方いますか? どうぞ宜しくお願いします。
- nihonbashi
- お礼率89% (139/156)
- SQL Server
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
SQL Server にはOracleのROWNUM擬似列のようなものはないので、Orderのない状態ではWHERE ROWNUM=2のような 簡単なとり方はできないと思います。 そこまでやることに意味があるかはわかりませんが、あえてやるなら SELECT TOP 2 URIAGE_CODE,URIAGE_DATE,URIAGE_KINGAKU FROM URIAGE_TABLE EXCEPT SELECT TOP 1 URIAGE_CODE,URIAGE_DATE,URIAGE_KINGAKU FROM URIAGE_TABLE もし、Orderを切れるのならば、ROW_NUMBERが使えますので、そちらの方が普通です。 SELECT URIAGE_CODE,URIAGE_DATE,URIAGE_KINGAKU FROM (SELECT ROW_NUMBER() OVER (ORDER BY ソートキー) SEQ, * FROM URIAGE_TABLE) tmp WHERE SEQ=2
関連するQ&A
- 【MySQL】SITEN_CODE毎の高速ランキン
MySQL5.7でランキングの集計をしたいのですが、遅すぎて困っています。 URIAGEテーブルのSITEN_CODE毎にKINGAKU_RANKとKENSU_RANKを集計したい。 SELECT URIAGE.SITEN_CODE, URIAGE.SHAIN_BANGO, (SELECT COUNT(URIAGE2.KINGAKU) FROM URIAGE AS URIAGE2 WHERE URIAGE2.KINGAKU > URIAGE.KINGAKU AND URIAGE2.SITEN_CODE = URIAGE.SITEN_CODE)+1 AS KINGAKU_RANK, URIAGE.KINGAKU, (SELECT COUNT(URIAGE2.KENSU) FROM URIAGE AS URIAGE2 WHERE URIAGE2.KENSU > URIAGE.KENSU AND URIAGE2.SITEN_CODE = URIAGE.SITEN_CODE)+1 AS KENSU_RANK, URIAGE.KENSU FROM URIAGE ・件数が少ない内は動いたので、データ登録(約13万件) ・データ登録後、次のSQLで12時間動かしても終了しない。 という状態で困っています。 高速にランキング集計する方法があればご教授くださいm(_ _)m
- 締切済み
- MySQL
- 集計のSQL文を教えてください
集計で困っています。 助けてください。 uriage_date(date型) uriage_kingaku 2005/01/01 00:15 2000 2005/01/01 12:20 2500 2005/01/02 00:00 1000 ←ここは前日分(2005/01/01)に 2005/01/02 05:15 1800 2005/01/04 12:30 2300 ~ 2005/12/31 20:20 5000 2005/12/31 22:45 1200 上の様なテーブルから 売上合計(1月分) uriage_date goukei_kingaku 2005/01/01 5500 2005/01/02 1800 2005/01/03 0 ~ 2005/01/31 9000 この様に1日毎(当日00:01~翌日00:00)の売上の合計金額 を一ヶ月単位で集計したいのですが、SQL文が解りません。 00:00の売上は前日の合計に入れたいです。 データの無い日も0円として欲しいです。 よろしくおねがいします。
- 締切済み
- Oracle
- EXSIST述語を使った副問合わせについて
SELECT HINMOKU_NAME FROM HINMOKU WHERE HINMOKU_CODE IN (SELECT HINMOKU_CODE FROM URIAGE WHERE URIAGE_DATE = '2004-11-10'); 上記をSQL文をEXISTS述語を使って書き換えると エラーが出てしまい、うまく書き換えがすることが できません。下記にエラーがでるSQL文を記載いたします。 SELECT HINMOKU_NAME FROM HINMOKU WHERE EXISTS (SELECT HINMOKU_CODE FROM URIAGE WHERE URIAGE_DATE ='2004-11-10' WHERE HINMOKU.HINMOKU_CODE=URIAGE.HINMOKU_CODE); 上記SQL文についてどこに問題があるのか、ご教授お願い致します。
- ベストアンサー
- SQL Server
- SQLの質問です。
SQLの質問です。 SQL Server 2008 R2 を使っている初心者です。 下の2つのテーブルがあります。 1)売上情報 table_uriage ・uriage_id ・user_id ・uriage_date ・uriage_kingaku 2)入金情報 table_nyukin ・nyukin_id ・user_id ・nyukin_date ・nyukin_kingaku この2つのテーブルに対して、同じ期間を指定して、集計表(ユーザー毎の合計)を 作りたいと思っています。別々の表にするには何の問題もないのですが、 問題は2つのSQLの結果を1つの表にしたいのですが、SQLをどのように組んだらいいか わかりません。 具体的な表としては、 user_id uriage_total nyukin_total ======================================== 001 11111 22222 002 33333 44444 003 55555 66666 みたいな感じになればいいのです。 どなたか教えて下さい。 よろしくお願いいたします。
- 締切済み
- SQL Server
- T-SQL(1件のみの取得)(再度)
前回、-SQL(SQL Server2000)で対象データを一件のみ取得する場合、どのようにすれば良いでしょうか? 処理的に無理でしょうか? PL/SQLの"ROWNUMBER = 1"のような条件は使うことが出来ないのでしょうか? 上記の内容の質問をさせて頂いて、『TOP』が使用できるという回答をもらったのですが、この『TOP』は、SELECT文で取得しようとする場合 どのようにすれば良いでしょうか? ヘルプ等で調べてみたものの、良く理解できませんでした;; 取得内容としては、該当データ1レコード内の1フィールドを取得したいです。 /* PL/SQLから引用 */ SELECT 項目A FROM テーブルA WHERE 項目A = 'AAA' AND 項目B = 10 AND ROWNUMBER = 1 この様な、取得方法を使用したいのですが、T-SQLではどのように行えばよろしいでしょうか? また、別の方法がありましたらお教えください。。。
- ベストアンサー
- その他(プログラミング・開発)
- 指定した年月までのデータを取得するSQL文
いつもお世話になっております。 今、指定した年月までのデータを取得するSQL文を考えています。 例:NENGETSU_DATEカラムがDATE型で、 データとして、2008/11/12と、2008/11/18と、2008/12/12が入っているとして、11月だけのデータを取得したい。(今回は、2008/11/12と、2008/11/18を取得) どのようなSQL文を書けばよろしいでしょうか。 よろしくお願いいたします。
- 締切済み
- Oracle
- AccessVBAでSQLServerのデータを操作する際のlikeについて
いつもお世話になっております。 タイトルの件なのですが、Accessのフォームを作成しました。 実行ボタンを押下すると入力した内容を元に、SQL文を作成してSQLServerのデータベースを操作するという内容です。 以下の順番で操作しています。 (1)該当データの件数を取得 (2)該当データをAccess上の一時テーブルに挿入 (3)該当データを更新 入力項目の1つが前方一致ですので、Where文に 項目名 like '入力内容%' といったlike演算子を含む分があります。 Where句は(1)~(3)全てで同じものを使用しています。 ですが、(1)(2)はこの文で問題なく実行できるのですが、(3)のみ実行できません。 同じWhere句を使っているのに、何故このような違いが起きるのでしょうか? 詳しい事は初心者なので分からないのですが、 DAOを使用してExecuteでSQL文を実行しています。
- 締切済み
- その他(データベース)
- SQL Server を使っています。SQLの質問です。
SQL Server を使っています。SQLの質問です。 得意先テーブルと商品テーブルと売上明細テーブルがあります。 一つの商品に関して得意先ごとに最新の売上明細データの一覧を作成したいと考えて います。 ■売上明細データ 明細ID (meisai_id) 得意先ID (tokuisaki_id) 商品ID (syohin_id) 売上金額(uriage_kingaku) 売上日 (uriage_date) ■売上明細データ(table_uri_maisai) meisai_id tokuisaki_id syohin_id uriage_kingaku uriage_date ================================================================= 1 aaa 001 100 2010/01/01 2 aaa 002 200 2010/01/01 3 bbb 001 105 2010/01/02 4 bbb 002 205 2010/01/02 5 ccc 001 110 2010/01/03 6 ccc 002 210 2010/01/03 7 aaa 001 100 2010/01/04 8 aaa 002 200 2010/01/04 9 bbb 001 105 2010/01/05 10 bbb 002 205 2010/01/05 11 ccc 001 110 2010/01/06 12 ccc 002 210 2010/01/06 上のような明細があり、「syohin_id」が「001」のデータに関して、 得意先ごとの最新のデータだけを抽出したいと考えています。 この場合ですと、以下の3件のデータが抽出できればよいわけです。 7 aaa 001 100 2010/01/04 9 bbb 001 105 2010/01/05 11 ccc 001 110 2010/01/06 tokuisaki_id と syohin_id の2つを特定して1件のデータを抽出するには 以下のSQLで実現できましたが、syohin_id だけを指定して複数のデータを 出すことがどうしてもできません。 SELECT * FROM table_uri_meisai WHERE uriage_date = (select max(uriage_date) FROM table_uri_meisai WHERE tokuisaki_id = 1 AND syohin_id = 1) AND tokuisaki_id = 1 AND syohin_id = 1 どなたかご指導ください。 よろしくお願いします。
- ベストアンサー
- SQL Server
- Excelワークシート上にSQL文を書き込み取得したデータをワークシート上に取得
はじめましてこんにちわ。 現在ExcelとSQLServerでADOを使ってデータを取得したいと思っています。 SQL文をワークシート上に書いてそれを読み込んでSQL文を実行するようにしたいのですが、それを取得したあと、データをExcelワークシートに表示させる方法が思いつきません。 SQL文で指定するデータは任意の文です。そのため取得されたフィールドがいくつできるかわからない状態です。 例えば、SQL文であったら SELECT 商品ID,商品名,価格 from 商品テーブル なりますが、商品ID,商品名,価格フィールドを自動的に Excelフォーム上に作りたいということです。 ・基本的にSELECT文しか使わない ・SQL文は任意のSQL文である の条件がありますがそれはできるのでしょうか? よろしくお願いします。
- 締切済み
- オフィス系ソフト
- SQLでデータを1件だけ取得したいのですが。
SQLでデータを1件だけ取得したいのですが。 以下のようなテーブルが2つあるとします。 ------------------------------------ テーブルA テーブルB 値X 値X 値Y 1 1 20 2 2 NULL 3 2 60 4 2 70 4 NULL 4 NULL ------------------------------------ ここで、テーブルAの値Xと、テーブルBの値Xをリンクさせます。 テーブルAにデータがあれば、テーブルBに無くても出力します(外部結合イメージ) テーブルAの値Xに対して、テーブルBの値Xは2件以上リンクされる可能性があります。 この場合は1件のみ出力します。 その1件の決め方は、テーブルBの値YがNULLでは無く最大の物です。 但し値Yは全てNULLの可能性もあるので、その場合NULLとして1件出力します。 上記の出力イメージ ------------------------------------ 値X 値Y 1 20 (1件の場合そのまま出力。1件がNULLでもそのまま出力) 2 70 (NULLではない最大の1件を出力) 3 NULL (テーブルBになくても出力) 4 NULL (値が全てNULLの場合、NULLとして1件出力) ------------------------------------ どのようなSQLを記載すれば実現可能でしょうか?
- ベストアンサー
- Oracle
お礼
詳細SQL文を有難うございました。 一発取得は無理ですか...。