- 締切済み
SQL文の書き方。初歩的ですみません。
SQL文苦手で困っています。教えてください。 MSSQLserver8.0使用です。 以下のテーブル。 コードA 区分 コードB 数量 101 A 301 1 101 A 302 2 101 A 303 1 101 B 901 2 101 B 902 1 102 A 301 1 102 B 901 2 を、コードB単位に数量を集計し、区分別に左右に分け 以下のように帳票出力したいのですが。 301 A 2 |(区切り)| 901 B 4 302 A 2 |(区切り)| 902 B 1 303 A 1 group by 区分, コードBといきたいところなんですが。 使用している帳票出力ソフトの関係上、1ページ毎に出力しなければならず、 通常、A区分データが多いため、改ページのタイミングがずれます。 A区分のデータとB区分のデータをそれぞれ別に取得し(2つのSQL)、 2つの結果を交互に1行ずつよむ・・・という方法以外に、 1つのSQL文で、 1行目がA区分(301)、2行目がB区分(901)、3行目がA区分(302)・・ のように交互にデータを取得する方法ってありますか? うまく表現できなくてすみませんが、 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
関連するQ&A
- SQL文をどう記述すれば良いか教えて下さい。
テーブルAが以下の様に在るとします。 連番(ユニークキー)/日付/社員コード/所属コード そして、社員コード、所属コードの名称が、テーブルBに登録されています。 区分/コード/名称 ここで、区分+コードでユニークキーとなっていて、区分=1は社員コード、区分=2は所属コードとなっています。 単純に、テーブルAから、ある日付を指定して、連番・社員コード・所属コードを取得する場合、SQL文は以下の様になると思います。 SELECT 連番,社員コード,所属コード FROM テーブルA WHERE 日付='20030401' この時、同時に、テーブルBから社員コードに対応する名称、及び所属コードに対応する名称を取得したい場合は、どの様に記述すれば良いのでしょうか?
- ベストアンサー
- その他(データベース)
- SQL(SELECT文)を教えてください
SQL Serverを勉強中です。 以下のようなテーブルに、同一の日付に複数の名称・値のセットが存在します。 Date(日付) Name(名称) Value(値) 20130101 a 10 20130101 b 20 20130101 c 30 20130202 a 5 20130202 b 10 20130202 c 15 このデータを、SQLのSELECT文で取得し、以下のような表を作りたいと考えています。 a b c 20130101 10 20 30 20130202 5 10 15 行が日付、列が名称になっています。 このように取得できるSQL文を教えてください。よろしくお願いします。
- ベストアンサー
- SQL Server
- SQL文を教えてください
SQLを教えてください。 以下のようなテーブルを仮定しています。 A B C -------------- 10 12 1201 11 12 1203 11 13 1205 12 12 1206 A列をー意にして、A列とB列の全データを取得 したいのですが、2・3行目のような場合は C列の大きい方を取得したいのですが・・・ 欲しい結果 A B C -------------- 10 12 1201 11 13 1205 <--- 12 12 1206
- ベストアンサー
- その他(データベース)
- こんなSQL文
Oracle8.1.7を使用しております。 以下のようなテーブルに対し、1行目と2行目を削除するSQL文を書きたいのですが、思いつきません。どなたか、アドバイスいただけないでしょうか? 表名:A B | C ―――――――― 2 | 10 2 | 1 1 | 10 1 | 1 1 | 11 1 | 2 1 | 1 3 | 10 2 | 3 変数として、P1=1とP2=2があります。(これは、SQL文の中に直接書くものとします。) ここで、SELECT B,C FROM A WHERE B=1;とSELECT B,C FROM A WHERE B=2;を実行すると、次のようになります。 B | C B | C ――――――――― ――――――――― 1 | 10 2 | 10 1 | 1 2 | 1 1 | 11 2 | 3 1 | 2 1 | 1 ここで、それぞれの表を見ると、Cの値が一致している部分があります。この一致していて、Bが2の行を削除したいのですが、SQL1文では無理でしょうか? 最近、SQLには慣れてきたつもりだったのですが、こんなとこでつまずくとは・・・どうぞよろしくお願いします。
- ベストアンサー
- その他(データベース)
- 【再】2)-SQL文の書き方を教えてください。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=694458 先日この問題で投稿しましたが、未完成のため、再度要望を整理し、ご指導をお願いいたします。 W←tabel名:名称、日付、数量 明細データ: 名称 日付 数量 A 2003/10/01 200 B 2003/10/03 500 C 2003/10/10 4000 A 2003/10/03 200 A 2003/10/03 100 C 2003/10/15 100 B 2003/10/15 300 C 2003/10/15 50 B 2003/10/15 60 求めているクエリーのイメージ: 2003/10/15 時点 ================================================ 名称 当日数量 当月数量 A 0 300 B 360 860 C 150 4150 ------------------------------------------------- 先日教えてもらったSQL文、希望のクエリーを作れないです。 -------------------------------------------------- select 名称, sum(AAA) as 当日数量, sum(BBB) as 当月数量 from ( select 名称, 0 as AAA, sum(数量) as BBB from W where 日付 >= #2003/10/01# and 日付 <= #2003/10/15# group by 名称 union select 名称, sum(数量) as AAA, 0 as BBB from W where 日付 = #2003/10/15# group by 名称 ) group by 名称; このSQL文は、2番目のSelectのところでエラーが出る (From句の構文エラーです) -------------------------------------------------- 後、Accessバージョンによって、SQL文が変わるでしょうか?当方は、Access97を使っている。 ご指導をお願いいたします。
- ベストアンサー
- Visual Basic
- postgreSQL SQL
postgreSQL7.3で以下のようなデータの並び替えを実現したいと思っています。 下記のようなデータを・・・ no | recno | name ----+-------+------ 1 | 1 | a 1 | 1 | b 1 | 2 | c 1 | 4 | a 2 | 3 | a 2 | 3 | c 2 | 3 | b 3 | 5 | b 4 | 6 | a 下記のような並びにSQLで取得することは可能でしょうか。 no | recno | name1 | name2 | name3 ----+-------+------+------+------ 1 | 1 | a | b | 1 | 2 | c | | 1 | 4 | a | | 2 | 3 | a | b | c 3 | 5 | b | | 4 | 6 | a | | noとrecnoのグループごとにnameを横に並べていきたいのですが、 可能なのでしょうか。 できれば、nameは個々のカラムに出力したいのですが、 配列のように1つのカラム内にカンマ区切りでの出力でも構いません。 上記のような表示が可能であれば、SQL文もご教授いただけますと幸いです。 宜しくお願いいたします。
- 締切済み
- PostgreSQL
- SQL文で表すには
以下の表を用いてSQL文を作成しようと思ってるんですが、途中までしか思いつかないので、どなたかご教授のほうよろしくお願いします。 shohin shiire 商品番号 商品名 単価 仕入番号 仕入先名 0001 みかん 100 001 A 0002 りんご 200 002 B 0003 ぶどう 300 003 C tran 購入番号 商品番号 仕入番号 数量 1 0001 001 1 2 0001 002 2 3 0001 003 3 4 0001 001 4 5 0001 002 5 6 0002 003 6 7 0002 001 7 8 0002 002 8 9 0003 003 9 10 0003 001 10 11 null 0004 20 これを以下のように出力するためにはどのようなSQL文を書けばよいですか? 商品番号 商品名 仕入番号 仕入先名 数量 単価 金額 0001 みかん 001 A 5 100 500 0001 みかん 002 B 7 100 700 0001 みかん 003 C 3 100 300 0002 りんご 001 A 7 200 1400 0002 りんご 002 B 8 200 1600 0002 りんご 003 C 6 200 1200 0003 ぶどう 001 A 10 300 3000 0003 ぶどう 003 B 9 300 2700 0004 null 004 null 20 null null ここまでは正しいと思うのですが・・・ select shohin.商品番号, shohin.商品名, shiire.仕入番号, tran.数量, shohin.単価, tran.数量 * shohin.単価 as 金額 よろしくお願いします。
- ベストアンサー
- Oracle
- 【初歩的な質問ですが・・・】 SQL文書き方がわかりません
SQLの知識に乏しい者です。 よろしくお願い致します。 ●テーブルA ・会計コード ・年度 ・部署番号 ・社員番号 ・その他幾つかのデータ ※Where句で「年度>2002年」以降を抽出 のテーブルがあります。 この時、Bテーブルで ●テーブルB ・会計コード(主キー) ・年度 ・部署番号(主キー) ・社員番号(主キー) ・その他幾つかのデータ ※Aテーブルで抽出されたデータの中から絞り込む というテーブルを抽出するSQL文を組みたいのですが、効率の良いやり方がわかりません。 副問合せで Select [B表で抽出した列名…] From B表 Where 会計コード = (Select 会計コード From A表 Where 年度 > '2002') AND 部署番号 = (Select 部署番号 From A表 Where 年度 > '2002') ・・・・以下省略 の様に書くと効率が悪い気がしました。 (実際には、副問合せが6個書くことになるため) 良い書き方を知っている方がいらっしゃいましたら、よろしくお願い致します。
- ベストアンサー
- Oracle
- 指定した区分と一致するコードは取得しないSQL
いつもお世話になります。 以下のデータ構成で、区分に「A01」「D01」のいづれかが含まれているコードは 取得しないようにしたいのですが、これを、SQLのみで実現するためにはどのように すればよいでしょうか。 【テーブル】 コード 区分 10000 A01 10000 B01 10000 C01 20000 C01 20000 D01 30000 B01 30000 E01 40000 B01 40000 E01 40000 F01 ↓ 【結果】 30000 40000 ※コード10000はA01が含まれており、20000はD01が含まれているため対象外 普通のプログラムならば、全て取得してきて、ループしながら該当する区分の場合は continueするなりしてはじけばい、というように想像できるのですが、SQLのみでやるということで、 ループ処理は行えないためどうしてもスマートな方法が思いつきません。 何かよい方法はないでしょうか。 宜しくお願いします。
- ベストアンサー
- SQL Server
お礼
>IDENTITY関数を利用した一時テーブルを二つ作成し すみません、よく分かりません。 私には難しすぎるようです。お恥ずかしい。 結局、そんな都合のよいSQL文はないということで、 ワーク変数にセットし、行数に応じてRedim・・・ みたいな感じでまとめました。 ありがとうございます。