0

こんにちは、StackOverflow の同僚です。

要点を簡単に説明します。MS Access にテーブルがあり、関心のある 2 つの列 (County と TGTE (Type Of Geothermal Energy) が含まれています) が含まれています。列 TGTE は VARCHAR 型で、2 つの値のうちの 1 つを持つことができます。簡単にするために、L または H のいずれかであるとしましょう。

以下に説明する結果を示す SQL クエリを作成する必要があります。

以下は表の一部です。


County | TGTE | ... |   
First  |   L  |
First  |   L  |
First  |   H  |
Second |   H  |
Third  |   L  |
__________________

次のように、すべての郡の個別の TGTE の数を示す結果のクエリが必要です。


County | TGTE = L | TGTE = H |    
First  |    2     |     1    |
Second |    0     |     1    |
Third  |    1     |     0    |
__________________________________

上記の目的の結果を表示するクエリを作成するにはどうすればよいですか?


注: アーカイブを閲覧したところ、同様のものが見つかりましたが、何も役に立ちませんでした。正直なところ、私は質問を適切に定式化する方法を知らないので、Google があまり役に立たなかった理由だと思います...

私はこれを試しました:

    SELECT County, COUNT(TGTE) as [Something]
    FROM MyTable
    WHERE TGTE = "L"
    GROUPBY COUNTY;

しかし、これは私が得る結果です:

County | TGTE = L |     
First  |    2     |  
Second |    0     |    
Third  |    1     |   
__________________________________

上記のクエリで L を H に変更すると、次のようになります。

County |  TGTE = H |   
First  |     1    |
Second |     1    |
Third  |     0    |
__________________________________

私は Windows XP で C++ を使用し、ADO を使用して MS Access 2007 データベースにアクセスしています。他にお手伝いできることがあれば、お尋ねください。喜んでお手伝いします。

編集#1:

Declanのソリューションを試した後、これが得られます:

メイン テーブルの値:

|    County    | TGTE |

| Стари Град   |  H   |

|    Сурчин    |  L   |

| Стари Град   |  H   |

| Савски Венац |  H   |

|   Раковица   |  H   |

出力:

|    County    | TGTE = L | TGTE = H | 

|   Раковица   |      1   |     1    | 

| Савски Венац |      1   |     0    |

|    Сурчин    |      1   |     0    |

| Стари Град   |      1   |     0    |

これを出力する必要があります:

|    County    | TGTE = L | TGTE = H | 

|   Раковица   |      1   |     0    | 

| Савски Венац |      1   |     0    |

|    Сурчин    |      0   |     1    |

| Стари Град   |      2   |     0    |

編集#2:

Declan の要求に応じて、私が使用する元のクエリを次に示します。

   wchar_t *query = L"select Општина, \
                      sum( iif( Тип_геотермалне_енергије = 
                                    'Хидрогеотермална енергија', 1, 0 ) ) as [HGTE], \
                      sum( iif(  Тип_геотермалне_енергије = 
                                    'Литогеотермална енергија', 1, 0 ) ) as [LGTE] \
                      from Објекат \
                      group by Општина; ";

この例に翻訳すると、次のようになります。

   wchar_t *query = L"select County, \
                      sum( iif( TGTE = 'H', 1, 0 ) ) as [HGTE], \
                      sum( iif( TGTE = 'L', 1, 0 ) ) as [LGTE] \
                      from MyTable \
                      group by County; ";

編集#3:

上記のクエリを Access にコピーして実行すると、すべて正常に動作するため、問題は ADO の使用にあると考えられます。

編集#4:

インターネットを閲覧した後、問題は ADO にあると確信しています。クエリが機能するように ADO で IIF() を使用するにはどうすればよいですか? それができない場合、yクエリを変更して上記のことを行う方法はありますか?

4

2 に答える 2

1

2 つの追加の列内で iif 関数を使用する必要があります。始めるための疑似コードを次に示します。

SELECT  County
        ,sum(iif(TGTE = "L",1,0)) as [L_Count]
        ,sum(iif(TGTE = "H",1,0)) as [H_Count]
FROM    MyTable
GROUP BY
        COUNTY;
于 2013-08-05T21:13:06.427 に答える