• ベストアンサー

SQLでの表作成について

使用しているのはSQL Server2000で、 以下のような各PCにインストールされているソフトウェア一覧の テーブルから コンピュータ名 | ソフトウェア名 ---------------------------------- コンピュータ1 | ソフト1 コンピュータ1 | ソフト2 コンピュータ1 | ソフト3 コンピュータ2 | ソフト2 コンピュータ2 | ソフト4   ・     ・   ・     ・ 以下ののようなどのPCにある特定のソフトウェアがインストールされているかを 確認するための表を作成したいのですが、 なにかよい方法はないでしょうか? できればSQLで作成したいとは思っています。 ご教授よろしくお願いいたします。 コンピュータ名 | ソフト1 | ソフト2 | ソフト4 ---------------------------------------------- コンピュータ1 |  1 | 1  | コンピュータ2 |    | 1  |  1   ・     ・   ・   ・   ・     ・   ・   ・

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

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

クロス集計のようなことをやりたいのですよね? select pc_name, sum(case when soft_name='soft1' then 1 else 0 end) as soft1, sum(case when soft_name='soft2' then 1 else 0 end) as soft2, sum(case when soft_name='soft3' then 1 else 0 end) as soft3, sum(case when soft_name='soft4' then 1 else 0 end) as soft4, sum(case when soft_name='soft5' then 1 else 0 end) as soft5, sum(case when soft_name='soft6' then 1 else 0 end) as soft6 from t1 group by pc_name

madouhito
質問者

お礼

回答ありがとうございます。 >クロス集計のようなことをやりたいのですよね? そのとおりで、教えていただいたSQLを実行した ところ無事に欲しい結果を得る事が出来ました。 ありがとうございました。

その他の回答 (2)

  • t_ohta
  • ベストアンサー率38% (5085/13293)
回答No.2

こういう事ですか? (泥臭いやり方だけど (^^; ) select a.コンピュータ名 as コンピュータ名, b.件数 as ソフト1, c.件数 as ソフト2, d.件数 as ソフト3, e.件数 as ソフト4 from ( select コンピュータ名 from テーブル group by コンピュータ名 ) a ( select コンピュータ名, count(ソフト1) as 件数 from テーブル where ソフトウェア名 = 'ソフト1' group by コンピュータ名 ) b ( select コンピュータ名, count(ソフト2) as 件数 from テーブル where ソフトウェア名 = 'ソフト12' group by コンピュータ名 ) c ( select コンピュータ名, count(ソフト3) as 件数 from テーブル where ソフトウェア名 = 'ソフト3' group by コンピュータ名 ) d ( select コンピュータ名, count(ソフト4) as 件数 from テーブル where ソフトウェア名 = 'ソフト4' group by コンピュータ名 ) e where a.コンピュータ名 = b.コンピュータ名 and a.コンピュータ名 = c.コンピュータ名 and a.コンピュータ名 = d.コンピュータ名 and a.コンピュータ名 = e.コンピュータ名 ;

madouhito
質問者

補足

回答ありがとうございます。 実行してみましたが、 where句で指定したソフト全てがインストールされている コンピュータの結果しか返ってきませんでした。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

普通に「CREATE TABLE」のSQL文を投げればいいと思いますが、そういうことではないんでしょうか?テーブルの設計の問題なのか、SQL文の文法の問題なのか、SQLServerへ投げる方法の問題なのか、さっぱりわかりません。補足をお願いします。

madouhito
質問者

補足

質問がわかりにくくて申し訳ありません。 質問欄の最初の表のようなテーブルから select文を使用して質問欄の2番目の表のような結果を得たいということです。

関連するQ&A

  • SQL Server2008でリンクサーバからテーブルを作成する方法

    SQL Server2008で、リンクサーバからテーブル(属性も含み)作成を行うには どのようにするのでしょうか (リンクサーバの設定は行えましたが、SQL Serverの知識はほとんどありません・・・) into テーブル名 FROM リンクサーバ(テーブル) というので テーブル属性も含めてテーブルを作成できるとの記事はあったの ですが、クエリで実行してもエラーとなってしまいます。 SQL Server2008でSQLを発行するには特別な指定が必要なのでしょうか? (SQLを発行する場所が間違っているのかもですが) 初歩的な質問で申し訳ございません、よろしくお願いします

  • DHCP Server のスコープから IP Address 一覧表を作成したい

    Client から DHCP Server に Access し、各スコープ情報から 使用 IP Address 一覧表を作成できる FreeSoft を探しています。 欲しい情報:IPアドレスとコンピュータ名の対応表 条件  1.Server に Free Soft 等のInstall は不可。  2.Client からのアクションで情報を入手したい   Server は NT4.0です 環境  Server:NT4.0 Server sp6a  Client:WindowsXP pro sp1  知恵を貸していただければ幸いです。

  • ORACLEテーブルを作成したSQLを調べたい

    バックアップに別サーバに同じORACLEテーブルを作成することとなりました。 どんなSQLでそのテーブルを作成したのか資料が無くてわかりません。 調べる方法を教えてください。よろしくお願いします。

  • [緊急!]SQLで当番表作成

    初めまして。 最近、SQLを学び始めました。 会社で掃除当番表を作成することになったのですが、どのようにしたらいいのかがわかりません。 条件としては、 1.人数は全部で31人。 2.1度にランダムに5人ずつ当番になる。 3.1度当番になると、全員の当番が一巡するまで回ってこない。 4.SQLServer2012を使用し、プログラミング後はAccessのフォームに出力してフォームで確認可能。 5.ランダムに選ばれた当番表を履歴テーブルに残す。 の5点になります。 本やネットで調べてみたのですがうまくいきません。 ご教授をお願い致します。

  • SQL 2000 にあった一覧のエクスポートはSQL 2005では無いですか?

    SQL 2000 Server のEnterprise Managerにある一覧のエクスポートボタンが、SQL 2005 ServerのManagement Studioにありません、何か良い手はあるのでしょうか。 やりたいことはテーブル、ストアドプロシージャ、ビューの一覧をエクスポートしたいです。

  • Excelの表の結合

    初めて投稿します。 Excelは通常操作と非常に単純な関数は使いますが、VBA等は知らない初心者です。 現在あるPC一覧の3つの表を1つの表にまとめ、 重複した行を削除する方法について考えています。 3つのファイルの内容は以下の通りです。 (1)元からあるPC一覧 行数も列数も一番多い  【例】A列:部署名、B列:コンピュータ名、C列:メーカー名、D列:機種名、E列:製造番号 etc (2)新規追加PC一覧その1 (1)とは別に追加PC一覧として作成したが、(1)と重複するものがある  【例】A列:コンピュータ名、B列:メーカー名、C列:機種名、D列:製造番号 (3)新規追加PC一覧その2 (1)とは別に追加PC一覧として作成したが、(1)と重複するものがある  【例】A列:コンピュータ名、B列:メーカー名、C列:機種名、D列:製造番号 最終的に(1)のフォーマットで1つの表にし、コンピュータ名が重複した行を削除したいです。 ただ、(1)と(2)(3)の重複はどちらが正しいかは他の情報も見比べないとわからない為、手動で削除が必要です。 現在は表のフォーマットを合わせてから、(1)の表に(2)(3)の行を追加し、countifでコンピュータ名の重複行をフィルタして1つずつ削除しています。 この流れで、例えば1つの表に結合して重複行を抜き出す、と言う部分は、SQLでクエリを実行すれば早いのかと思っていますが、Accessで実行するにはどのように表記すればよいでしょうか。 あるいは、Excelのまま効率のよい方法があれば、その内容を教えていただけますでしょうか。 どうぞよろしくお願いいたします。

  • VBとsql serverを使ってデータベースを操作したいと思って、

    VBとsql serverを使ってデータベースを操作したいと思って、 sql server management studioをインストールしたんですが、 Accessと違って何が何やら分からず、テーブルの作成すらできません。 最初に登録済みサーバを見ると、 自分のコンピュータ名\sqlexpless という名前のサーバらしきものがあり、 こんなサーバ作った覚えないぞ、デフォルトで作られるのかな? と思って右クリックから削除したんですが、 そのあと「オブジェクトエクスプローラを接続」を選択すると、さっきの名前のサーバが入力されてて、 接続を押したらなぜか復活していました。 意味が分からなかったので削除は諦め、新しくサーバを作ろうと「新規サーバの登録」から、適当に名前をつけてテストボタンを押したんですが、画像のようなエラーが出てきました。 見ても解決できなかったので諦めて、最初もともとあったサーバを使って新しくデータベースを作成しようとすると今度は、 CREATE DATABASE 権限が拒否された とのエラーが発生します。もう何もできなくなってしまいました。 お時間がよろしければ、インストールした直後からオリジナルのサーバとデータベースを作成して、テーブルの作成あたりまでを解説していただけないでしょうか。

  • JOINを使ったSQL文を作成しようとしています。

    JOINを使ったSQL文を作成しようとしています。 以下の様な3つのテーブルがある場合のSQL文を教えて下さい ※勉強の為、適当なテーブルを作成しましたが、やりたい事は  JOINの中に更にJOINさせたSQL文を作成したいと思ってます 表A  USER_ID(プライマリキー)  NAME 表B  USER_ID(プライマリキー) ※表A.USER_IDと紐着く  BUMON(プライマリキー)  TERM(プライマリキー) 表C  BUMON(プライマリキー) ※表B.BUMONと紐着く  TERM(プライマリキー) ※表B.TERMと紐着く  MEMBER 【取得したい項目】  表A.USER_ID 【抽出条件】  表CのMEMBERの値が'10','20'以外(である表AのNAMEを取得)

  • <SQL>別の表の要素から新しい表を作成

    SQLでセレクトしたデータを新しい表として作ることは出来ると思うのですが、セレクトしたデータ(1列)をもとに3列の要素があるテーブルを作るということは可能でしょうか? 例をあげて説明すると、 ある表はX1(商品ID(主キー)、商品名、値段、・・・)からなり、そこに100件のデータがあるとする。 別の表としてX2(商品ID、在庫、発注数)があるとする。 こういう場合にX2の表を作成すると同時に、(X1の商品ID、0、0)となるデータ100件も作成したいのですが、そういう操作は可能でしょうか? 手入力でinsertをしてデータを作るとなると、データが多い時に手間がかかるし、入力ミスが起きることもあると思うので、上記を達成できる方法があったら教えてください。 結合という方法だと列が多くなってしまうので、希望に合わないかなと思います。 よろしくお願いします。

  • Visual Studio2012 SQL2014

    お世話になります。 Visual Strudio 2012 で VB.Netで開発をしております。(以降VS) 最近、SQL Server 2014 をサーバーにインストールいたしまして、VSの SQL Server オブジェクトエスクプローラーにて SQL Server 2014接続させ(接続までは出来ました)、そこから展開させようとしてもオブジェクトのツリーが表示されず、最新の情報に更新を実行すると、『オブジェクトの現在の状態に問題があるため、操作は有効ではありません。』と表示されてしまいます。VSをコンパイルしてSQL Server 2014とのデータ連携はきちんとされており、正常に動作いたします。ですが、開発の際にテーブルの項目の追加、ストアドプロシジャーなどの作成など、いちいちサーバー側で作成しなくてはならないのが面倒で仕方ありません。ちなみに、サーバーには SQL Server 2005 ,2008もインストールされており、両方とも SQL Server オブジェクトエクスプローラーで表示、展開ができ、テーブルの作成から項目の追加、ストアドプロシジャーなどもきちんと作成が可能です。VS2012 と SQL Server 2014の相性が悪いのでしょうか?SQL Server オブジェクトエクスプローラーで、2005、2008同様にテーブル、ストアドプロシジャーの作成をしたり、項目の追加をしたいのですが、どうすればよいでしょうか?皆目見当がつかないで難儀しております。もしかして、VS 2012 と SQL Server 2014は 2014の方が新しいから VS2012では編集不可などということがあるのでしょうか?(AccessではAccessのヴァージョンより新しいSQL Serverの編集ができません) お分かりになる方がいらっしゃいましたら、どうかお知恵をお借りできれば幸いでございます。何卒よろしくお願い申し上げます。