1

SQL についての私のひどく限られた理解を許してください。誰かが私を助けてくれることを願っています。少し前に他の人が書いたクエリを変更する必要があります。

このクエリは、さまざまな分野のさまざまな業界の業界ごとの消費量を表示します。現在吐き出すテーブルは次のようになります。

+---------------+----------+---------+
| Economic area | Industry |   Total |
+---------------+----------+---------+
| Area1         |          |         |
|               | Ind1     |  459740 |
|               | Ind2     |   43000 |
|               | Ind3     |       0 |
|               | Total    |  502740 |
| Area2         |          |         |
|               | Ind1     |  725560 |
|               | Ind2     |  111017 |
|               | Ind3     |  277577 |
|               | Total    | 1114154 |
+---------------+----------+---------+

残念ながら、この表を、各業界および地域の生産者数について公開している別の表と併せて使用すると、生産者が非常に少ない場合に商業上の機密情報が明らかになる可能性があります。たとえば、下の表では、地域 1 の産業 2 に生産者が 1 つしかないため、地域 1 の産業 2 によって消費される上記の表のすべてがその生産者に送られます。

+---------------+---------+------+------+------+
| Economic area | County  | Ind1 | Ind2 | Ind3 |
+---------------+---------+------+------+------+
| Area1         |         |      |      |      |
|               | county1 |    1 |    0 |    0 |
|               | county2 |    3 |    1 |    2 |
|               | county3 |    1 |    0 |    0 |
|               | Total:  |    5 |    1 |    2 |
|               |         |      |      |      |
| Area2         | county4 |    5 |    0 |    1 |
|               | county5 |    3 |    3 |    1 |
|               | county6 |    1 |    0 |    1 |
|               | county7 |    0 |    0 |    0 |
|               | Total:  |    9 |    3 |    3 |
+---------------+---------+------+------+------+

私が依頼されたのは、次のような最初の表の要約バージョンを作成することです。ここでは、ある地域に 3 人未満の生産者しかいない産業が、一般的なその他の産業に集約されています。このようなもの:

+---------------+----------+--------+
| Economic area | Industry |  All   |
+---------------+----------+--------+
| Area1         |          |        |
|               | Ind1     | 459740 |
|               | OtherInd | 121376 |
|               | Total    | 581116 |
| Area2         |          |        |
|               | Ind1     | 725560 |
|               | Ind2     | 111017 |
|               | Ind3     |    244 |
|               | Total    | 836821 |
+---------------+----------+--------+

私はしばらく探していましたが、機能するもの、またはそれを機能させるのに十分理解できるものを見つけることができませんでした. ...を使用してみCount(Case(industry_code<3,1,0))ましたが、MS Access で作業しているため、機能しません。IIFandまたはステートメントを使用することを考えましSwitchたが、どちらも適切なタイプの比較を許可していないようです。また、誰かが 2 つの異なるグループ化を持つ From ステートメントを提案した場所も見つけましたが、試してみると Access がエラーを吐き出しました。

私が持っていた唯一のわずかな成功はHAVING (((Count(Allmills.industry_code))>3)).

現在、クエリのやや簡略化されたバージョンは次のようになります。

SELECT 
    economic_areas.economic_area AS [Economic area],
    Industry_codes.industry_heading AS Industry, 
    Sum(Allmills.consumption) AS [All], 
    Sum(Allmills.[WA origin logs]) AS Washington 
    Allmills.industry_code, 
    Count(Allmills.industry_code) AS CountOfindustry_code, 
    Sum(Allmills.industry_code) AS SumOfindustry_code
FROM ((economic_areas INNER JOIN Allmills ON (economic_areas.state_abbrev =   
      Allmills.state_abbrev) 
      AND (economic_areas.economic_area_code = Allmills.economic_area_code)) 
      INNER JOIN Industry_codes ON Allmills.display_industry_code =  
       Industry_codes.industry_code)
WHERE (((Allmills.economic_area_code) Is Not Null))
GROUP BY Allmills.display_industry_economic_area_code, 
         Allmills.display_industry_code, economic_areas.economic_area,
         Industry_codes.industry_heading, Allmills.industry_code
ORDER BY Allmills.display_industry_economic_area_code, 
            Allmills.display_industry_code;

私が他の場所で調べることができる有用なテクニックの種類の提案であっても、どんな助けも大歓迎です - 私はただ今サークルで走っています.

4

1 に答える 1

0

HAVINGここで本当に解決策です-クエリを> 3で使用するように変更し、 <= 3でHAVING別のクエリを追加してから、それらの結果HAVINGUNION ALL

于 2013-10-10T20:18:26.357 に答える