1

Sqliteの2つの異なる場所にある同じテーブルの2つのselectクエリをどのように組み合わせることができますか?

10k行を超えるテーブルがあります。2つの行の例は次のようになります。

year | project | finance | flow
1990 | water   | 300500  | grant
1999 | energy  | 200500  | loan

私の試みはうまくいきません:

SELECT sum(finance), (select sum(finance) from table where flow = grant) 
FROM table where flow = loan group by year 

結果には、すべての結果が年ごとにグループ化され、助成金の列とローンの列に合計(予算)が表示されます。

year | grant | loan
1990 | 62662 | 383983
1991 | 28928 | 278272

更新:最初の例は私のユースケースに正しく対応していませんでした。私はそれを変えなければなりませんでした。

4

1 に答える 1

3

この場合、CASEを使用します。

 SELECT year, 
        SUM(CASE WHEN flow = 'grant' THEN finance ELSE 0 END) AS grant_total, 
        SUM(CASE WHEN flow = 'loan' THEN finance ELSE 0 END) AS loan_total
 FROM your_table 
 GROUP BY year

ロジックは概説したものとは異なりますが(単一のWHERE句を持つ単一のSELECTです)、必要なデータを行から列に効果的にピボットします。

于 2012-04-20T00:48:47.930 に答える