4

これに対する答えを 1 時間の大半を探していましたが、あまり運がありませんでした。同じ列名でレイアウトされた 2 つの地域テーブルがあり、次のクエリに基づいていずれかのテーブルの結果リストを出力できます (Table2 を Table1 に置き換えます)。

SELECT Table1.YEAR, FORMAT(COUNT(Table1.id),0) AS Total
FROM Table1
WHERE Table1.variable='Y' 
GROUP BY Table1.YEAR

理想的には、年ごとのカウントの合計を示す結果を得たいので、代わりに:

|     REGION 1     |     |     REGION 2     |
|  YEAR  |  Total  |     |  YEAR  |  Total  |
|  2010  |    5    |     |  2010  |    1    |
|  2009  |    2    |     |  2009  |    3    |
|        |         |     |  2008  |    4    |

私が持っているだろう:

|     MERGED       |
|  YEAR  |  Total  |
|  2010  |    6    |
|  2009  |    5    |
|  2008  |    4    |

さまざまな JOIN やその他のアイデアを試しましたが、SUM と COUNT の問題に追いついていると思います。どんな助けでも大歓迎です、ありがとう!

4

4 に答える 4

7
SELECT `YEAR`, FORMAT(SUM(`count`), 0) AS `Total`
FROM (
    SELECT `Table1`.`YEAR`, COUNT(*) AS `count`
    WHERE `Table1`.`variable` = 'Y'
    GROUP BY `Table1`.`YEAR`
    UNION ALL
    SELECT `Table2`.`YEAR`, COUNT(*) AS `count`
    WHERE `Table2`.`variable` = 'Y'
    GROUP BY `Table2`.`YEAR`
) AS `union`
GROUP BY `YEAR`
于 2012-07-09T15:06:56.887 に答える
0

UNION を使用する必要があります。

SELECT
    t.YEAR,
    COUNT(*) as TOTAL
FROM (

SELECT *
FROM Table1

UNION ALL

SELECT *
FROM Table2

) t
WHERE t.variable='Y'
GROUP BY t.YEAR;
于 2012-07-09T15:04:34.633 に答える
0
Select year, sum(counts) from (
SELECT Table1.YEAR, FORMAT(COUNT(Table1.id),0) AS Total
FROM Table1
WHERE Table1.variable='Y' 
GROUP BY Table1.YEAR
UNION ALL
SELECT Table2.YEAR, FORMAT(COUNT(Table2.id),0) AS Total
FROM Table2
WHERE Table2.variable='Y' 
GROUP BY Table2.YEAR ) GROUP BY year
于 2012-07-09T15:05:09.687 に答える