プロが教えるわが家の防犯対策術!

使用しているのはSQL Server2000で、
以下のような各PCにインストールされているソフトウェア一覧の
テーブルから

コンピュータ名 | ソフトウェア名
----------------------------------
コンピュータ1 | ソフト1
コンピュータ1 | ソフト2
コンピュータ1 | ソフト3
コンピュータ2 | ソフト2
コンピュータ2 | ソフト4
  ・     ・
  ・     ・

以下ののようなどのPCにある特定のソフトウェアがインストールされているかを
確認するための表を作成したいのですが、
なにかよい方法はないでしょうか?
できればSQLで作成したいとは思っています。
ご教授よろしくお願いいたします。

コンピュータ名 | ソフト1 | ソフト2 | ソフト4
----------------------------------------------
コンピュータ1 |  1 | 1  |
コンピュータ2 |    | 1  |  1
  ・     ・   ・   ・
  ・     ・   ・   ・

A 回答 (3件)

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

補足をお願いします。

この回答への補足

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

補足日時:2008/05/20 13:36
    • good
    • 0

こういう事ですか?


(泥臭いやり方だけど (^^; )
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.コンピュータ名
;

この回答への補足

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

補足日時:2008/05/20 14:01
    • good
    • 0

クロス集計のようなことをやりたいのですよね?



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
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/20 14:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!