私たちは、数字を報告しようとしている小さなランダムな調査をしています。複数のテーブルにまたがる2つのグループを別々にカウントするSQL?
+--------+-------+----------------------+-----------------+
| caseID | patID | randomizedDate | randomizedGroup |
+--------+-------+----------------------+-----------------+
| 1 | 5000 | 2/17/2010 5:12:00 PM | T |
| 2 | 5005 | 3/11/2010 1:45:00 PM | C |
| 3 | 5007 | 3/22/2010 7:16:00 AM | C |
| 4 | 5011 | 4/10/2010 3:34:00 PM | T |
| 5 | 5015 | 4/19/2010 5:41:00 PM | C |
| 6 | 5018 | 5/23/2010 4:06:00 PM | T |
| 7 | 5021 | 6/27/2010 5:28:00 PM | T |
| 8 | NULL | NULL | C |
| 9 | NULL | NULL | T |
| 10 | NULL | NULL | T |
| 11 | NULL | NULL | C |
| 12 | NULL | NULL | C |
テーブルが既に統計を使用して無作為Tsを&のCsで予め生成された:このデータベースでは、我々はそうように設計されている各テーブルごとに異なるランダム化群(対照対処置)を含む8つのテーブルを持っていますプログラムを事前に。したがって、我々はプロジェクトのためにあらかじめ定められた基準に基づいて満たされるのを待っている8つのグループを持っています。これらのテーブルの複数にPatIDは存在しません。
私たちが必要とするのは、randomizedGroup列に基づいてこれらのテーブル全体でカウントの内訳です。たとえば:
+--------------------+--------+--------+--------+----------+
| randomizationGroup | Table1 | Table2 | Table3 | So on... |
+--------------------+--------+--------+--------+----------+
| C | 10 | 24 | 14 | |
| T | 11 | 16 | 21 | |
+--------------------+--------+--------+--------+----------+
今のところ、私は次のクエリを使用して、これらの番号を取得していますが、私はこれが最適であるか、私はそれを別の方法をやっているかどうかどうかを確認したかったです。 SQLを使うほど、私はそれが好きなので、私はいつも自分のスキルを洗練して学びたいと思っています。
SELECT randomizationGroup, SUM(count1) AS Table1, SUM(count2) AS Table2, SUM(count3) AS Table3, SUM(count4) AS Table4, SUM(count5) AS Table5, SUM(count6) AS Table6, SUM(count7) AS Table7, SUM(count8) AS Table8
FROM (
SELECT randomizationGroup, COUNT(*) AS count1, 0 AS count2, 0 AS count3, 0 AS count4, 0 AS count5, 0 AS count6, 0 AS count7, 0 AS count8 FROM Table1 WHERE patid IS NOT NULL GROUP BY randomizationGroup
UNION ALL
SELECT randomizationGroup, 0 AS count1, COUNT(*) AS count2, 0 AS count3, 0 AS count4, 0 AS count5, 0 AS count6, 0 AS count7, 0 AS count8 FROM Table2 WHERE patid IS NOT NULL GROUP BY randomizationGroup
UNION ALL
SELECT randomizationGroup, 0 AS count1, 0 AS count2, COUNT(*) AS count3, 0 AS count4, 0 AS count5, 0 AS count6, 0 AS count7, 0 AS count8 FROM Table3 WHERE patid IS NOT NULL GROUP BY randomizationGroup
UNION ALL
SELECT randomizationGroup, 0 AS count1, 0 AS count2, 0 AS count3, COUNT(*) AS count4, 0 AS count5, 0 AS count6, 0 AS count7, 0 AS count8 FROM Table4 WHERE patid IS NOT NULL GROUP BY randomizationGroup
UNION ALL
SELECT randomizationGroup, 0 AS count1, 0 AS count2, 0 AS count3, 0 AS count4, COUNT(*) AS count5, 0 AS count6, 0 AS count7, 0 AS count8 FROM Table5 WHERE patid IS NOT NULL GROUP BY randomizationGroup
UNION ALL
SELECT randomizationGroup, 0 AS count1, 0 AS count2, 0 AS count3, 0 AS count4, 0 AS count5, COUNT(*) AS count6, 0 AS count7, 0 AS count8 FROM Table6 WHERE patid IS NOT NULL GROUP BY randomizationGroup
UNION ALL
SELECT randomizationGroup, 0 AS count1, 0 AS count2, 0 AS count3, 0 AS count4, 0 AS count5, 0 AS count6, COUNT(*) AS count7, 0 AS count8 FROM Table7 WHERE patid IS NOT NULL GROUP BY randomizationGroup
UNION ALL
SELECT randomizationGroup, 0 AS count1, 0 AS count2, 0 AS count3, 0 AS count4, 0 AS count5, 0 AS count6, 0 AS count7, COUNT(*) AS count8 FROM Table8 WHERE patid IS NOT NULL GROUP BY randomizationGroup) all_groups
GROUP BY randGroup
ありがとうございます!
使用しているデータベースエンジンとバージョンは何ですか? – Lamak
SQL 2005標準SP3 9.00.4053。00 – Richard
すべてのデータを1つのテーブルにコピーできますか?テスト名を示す追加の列がありますか? – Mark