yamada_gのプロフィール

@yamada_g yamada_g
ありがとう数353
質問数0
回答数574
ベストアンサー数
258
ベストアンサー率
68%
お礼率
0%

  • 登録日2010/07/20
  • 積み上げ棒グラフのためのSQL SELECT文

    Visual Studio Express 2013 for Webでデータベースアプリを作成しています。 例えば、 Person表 Id S_Id C_Id Z 1 1 2 12 2 2 2 2 3 2 3 NULL 4 4 4 NULL 5 4 4 44 6 5 5 5 7 1 1 1 8 1 6 7 9 7 7 7 10 6 6 6 11 1 5 NULL 12 4 5 5 13 4 5 5 14 6 7 8 のようなデータがあり、横軸S_Id、縦軸C_Idの数、の積み上げ棒グラフ(StackedColumn) (S_Id毎にC_Idの数の内訳を示したグラフ。カウント対象はZがNULLでないものだけ) を作成するには、どのようなSQL SELECT文を書けばよいでしょうか。 目的とする要素数は、 SELECT S_Id, C_Id, COUNT(Z) FROM Person GROUP BY S_Id, C_Id; で出るのですが、 積み上げ棒グラフのためには、 SELECT S_Id, C_Id=1の数(ZがNULLでない), C_Id=2の数(ZがNULLでない), C_Id=3の数(ZがNULLでない), ... FROM Person GROUP BY S_Id; のような形にする必要があるようで、うまく書けません。 COUNTで、ZがNULLでなくかつC_Id=1のものをカウントする、というようなことができればよいのですが。

  • 10営業日前の日付を取得したい(修正)

    ※連投すみません。削除も修正もできなかったので連投になってしまいました。 一番重要な説明をコピペミスしてしまいました。 明日になれば削除できるようなので古い方は明日削除致しますm(__)m ---ここから--- 今日は9/24という想定で各部署の10営業日前の日付を取得したいのですが良い方法が思いつきません。 (ここ↓を参考にしたらできそうな気がしましたが私の頭では無理でした。。。) http://okwave.jp/qa/q6677209.html 【休日テーブル】 部署コード, 休日 ----------------- busyo1,   9/13 busyo1,   9/14 busyo1,   9/20 busyo1,   9/21 busyo1,   9/23 busyo2,   9/7 busyo2,   9/14 busyo2,   9/21 busyo3,   9/20 【結果】(各部署の10営業日前の日付) 部署コード, 日付 ----------------- busyo1,   9/9 busyo2,   9/12 busyo3,   9/13 このような「発想の転換」が必要な感じのSQLが本当に苦手です。 全然思いつかずに今日も半日を浪費してしまいました。 何かコツのようなものがあるのでしょうか。 お礼は明日の夜になってしまいますが何卒よろしくお願いします。

  • 特定条件での連番の振り方を教えて下さい

    以下のようなテーブルがあります。 納品データ 注文番号 売上番号 連番 商品名 11111    2      1   さしすせそ 11111    2      2   たちつてと  11111    3      1   なにぬねの 11111    4      1   はひふへほ 売上データ(既存データ) 注文番号 売上番号 連番 商品名 11111    1       1   あいうえお 11111    1       2   かきくけこ 注文番号は注文毎に付与される番号 売上番号は発送毎に付与される番号 連番は売上番号毎に付与される連番 毎回 納品データを売上データに取り込みます。 連番に関しては、 納品データと売上データで連番は連動しておらず、 売上データに納品データと同等の注文番号があれば、 注文番号の最大連番数を+1した番号で取り込みます。 更新後、売上データは、 注文番号 売上番号 連番 商品名 11111    1       1   あいうえお(既存データ) 11111    1       2   かきくけこ(既存データ) 11111    2       3   さしすせそ 11111    2       4   たちつてと 11111    4       5   なにぬねの 11111    5       6   はひふへほ としたいのです。 SELECT (SELECT 納品データ.連番+(SELECT NVL(MAX(売上データ.連番),0) FROM 売上データ WHERE 売上データ.注文番号 = 納品データ.注文番号) AS 連番) FROM 納品データ で売上データの連番+1はできたのですが、 売上番号が違う場合は、連番が1になるパターンとなり、 納品データ 注文番号 売上番号 連番 商品名 11111    2       1   さしすせそ 11111    2       2   たちつてと  11111    3       1   なにぬねの ← 11111    4       1   はひふへほ ← 上記SQLですと、 更新後、売上データは、 注文番号 売上番号 連番 商品名 11111    1       1   あいうえお(既存データ) 11111    1       2   かきくけこ(既存データ) 11111    2       3   さしすせそ 11111    2       4   たちつてと 11111    4       3   なにぬねの ← 5にしたい 11111    5       3   はひふへほ ← 6にしたい となり、連番となりません。 どのようにSQLを書けばよいのか、困っています。 どうか、ご教示お願い致します。

    • boooone
    • 回答数1
  • 複数の行を集約するSQLについて

    以下のテーブルのレコードをもとに A B C 1| あ | あ | 1 | 2| あ | い | 1 | 3| あ | う | 1 | 4| う | あ | 1 | 5| え | あ | 1 | 6| あ | あ | 2 | 7| あ | い | 2 | 8| あ | う | 2 | 9| う | あ | 2 | 以下のテーブルを作成したいと考えています。 A B C D E 1| あ | あ | 1 | あ | - | 2| あ | い | 1 | い | - | 3| あ | う | 1 | う | あ | 4| え | あ | 1 | - | え | 5| あ | あ | 2 | あ | - | 6| あ | い | 2 | い | - | 7| あ | う | 2 | う | あ | (1)カラムCを1つのグループとします。 (2)その中でカラムAの値が「あ」の場合は、カラムBの値をカラムDに設定する。 (3)カラムAの値が「あ」ではない場合は、カラムBの値をカラムEに設定する。 (4)カラムAの値とカラムBの値を入替えると同じ場合は(例では上の表の3と4、8と9のレコード)、 カラムAの値が「あ」でない方のレコード(4と9のレコード)のカラムBの値をカラムEに設定する。 (5)(4)で値を設定した方のレコードを削除する。 どのようなSQLを作成すればできるのでしょうか? SQLに詳しい方がいらっしゃれば、ご教授をお願います

  • SQLで連続したカラムが何個あるかを求める方法

    お世話になっております。 PHPとmysqlでサイトを作っておりまして、そのログを分析しようとしています。 あるテーブルにユーザー名とログイン日付が入ったテーブルが有ったとして、その中で連続○日ログインしていた人は○人という結果を取りたいと考えているのですがこれをSQLで処理する方法はありますでしょうか? 今のところ、PHPで全データを取った後にPHP側で処理するしかないかと思っているのですが、件数が多いため可能であればmysql側で処理したいと思っています。 日付はUNIXTIMEに直すなどすればINTEGERに変換出来るとは思っているのですが、日付型(難しいようであればINT型の連続値でも問題ありません)でSQLで処理出来る方法はあるのでしょうか? ○○結合をすれば良いなど手がかりなど教えていただけると助かります。 ■テーブル username   login_date ほげ      2014/5/1 ほげ      2014/5/2 ほげ      2014/5/3 ほげ      2014/5/4 ふーばー   2014/5/2 ふーばー   2014/5/3 あああ     2014/5/1 あああ     2014/5/3 あああ     2014/5/4 ■ほしい結果 4日連続   1名 2日連続   2名