2017-06-28 9 views
0

私は状態によってグループ化された都市人口の変化を決定しようとしていますし、このように見える2つのテーブル間の都市:(簡単な)SQLが希望の列を返さない。ハーフワーキングクエリ(アクセス)

**TABLE 1**       **TABLE 2** 
NY New York 10,000    NY New York -3000 
NY Syracuse  5,000    NY Syracuse  5000 
PA Phila  12,000    PA Phila  1000 
PA Erie  11,000    PA Erie   4000 

私が使用しているクエリは以下の通りである。

私はそれがまた街を返す必要が

**RESULT**         
NY     7000 
NY    10000 
PA    13000 
PA    15000 

SELECT Table1.State, Table1.City, SUMtable1.populationsum-Nz(SUMtable2.populationsum,0) AS Total 
FROM (SELECT SUM(table1.populationchange) AS popsum, table1.State 
     FROM Table1 
     GROUP BY table1.State, table1.City) AS SUMtable1 
LEFT JOIN (SELECT SUM(table2.populationchange) AS rsum, table2.State 
      FROM table2 
      GROUP BY table2.State, table2.City) AS SUMtable2 
ON SUMtable1.State= SUMtable2.State; 

しかし、これは私だけこれを提供します。この時点で、クエリは都市のパラメータ値を求めるメッセージを表示します。それを空白のままにしてEnterを押すと、その結果が得られます。このクエリはどのようにして完了できますか?

答えて

1

都市はFROMクエリの一部ではありません。サンプル表と

SELECT State,City, sum(possum) AS Total 
FROM ((
     SELECT SUM(table1.populationchange) AS popsum, table1.State as state, 
Table1.City as city 
    FROM Table1 
    GROUP BY table1.State, table1.City) 
Union All (
     SELECT SUM(table2.populationchange) AS rsum, table2.State as state , 
Table2.City as city 
     FROM table2 
     GROUP BY table2.State, table2.City)) 
Group by state,city 
+0

どこに含めることができますか?どのFROMステートメントでですか?どこにでも追加するとクエリが破損するようです –

0

同じシナリオ:

 create table #temp1(c varchar(100),s varchar(100), p int); 
    create table #temp2(c varchar(100),s varchar(100), p int); 
    Insert into #temp1(c,s,p) values('ny','syc',10) 
    Insert into #temp1(c,s,p) values('ny','ny',10) 
    Insert into #temp1(c,s,p) values('Nc','ra',10) 
    Insert into #temp1(c,s,p) values('Ns','char',10) 
    Insert into #temp2(c,s,p) values('ny','syc',10) 
    Insert into #temp2(c,s,p) values('ny','ny',10) 
    Insert into #temp2(c,s,p) values('Nc','ra',10) 
    Insert into #temp2(c,s,p) values('Ns','char',10) 

    select result.s,result.c,sum(p) as total from (
    select * from #temp1 union all select * from #temp2) as result group by result.c,result.s 

正確なクエリ:

select res.state,res.city,sum(res.popultationchange) as totalchange 
    from(
    select * from Table1 union all select * from Table2 
    ) as res group by res.state,res.city 

希望これは何が必要です!

関連する問題