0

Access クエリに少し問題があります (理由は聞かないでください。本当の SGBD は使用できませんが、Access です)。920k レコードのような巨大なテーブルがあります。これらすべてのデータをループして、5 つ以上発生する ref を取得する必要があります。同じ日の時間

テーブル = マイテーブル

--------------------------------------------------------------
| id  |      ref            |      date     |   C_ERR_ANO    |
--------------------------------------------|-----------------
| 1   |    A12345678        |   2012/02/24  |    A 4565      |
| 2   |    D52245708        |   2011/05/02  |    E 5246      |
| ... |    .........        |   ..../../..  |    . ....      |
--------------------------------------------------------------

少し再開しますが、900000 以上のレコードがあり、同じ日付に重複があります (ちなみに、名前として C_ERR_ANO を持つ、追加するのを忘れていた別の列があります)

したがって、これらすべての行をループして、日付とエラー番号に基づいて各参照を取得する必要があります

同じエラー番号で5回以上ある場合は、それらを取得して結果に表示する必要があります

私はこのクエリを使用して終了しました:

SELECT DISTINCT Centre.REFERENCE, Centre.DATESE, Centre.C_ERR_ANO
FROM Centre INNER JOIN (SELECT 
    Centre.[REFERENCE],
    COUNT(*) AS `toto`,
    Centre.DATESE
    FROM Centre
       GROUP BY REFERENCE
       HAVING COUNT(*) > 5)  AS Centre_1 
       ON Centre.REFERENCE = Centre_1.REFERENCE
       AND Centre.DATESE <> Centre_1.DATESE;

しかし、このクエリはうまくいきません

SELECT DATESE, REFERENCE, C_ERR_ANO, COUNT(REFERENCE) AS TOTAL
FROM (
    SELECT *
    FROM Centre
    WHERE (((Centre.[REFERENCE]) NOT IN (SELECT [REFERENCE] 
        FROM [Centre] AS Tmp 
            GROUP BY [REFERENCE],[DATESE],[C_ERR_ANO]
            HAVING Count(*)>1  AND [DATESE] = [Centre].[DATESE] 
            AND [C_ERR_ANO] = [Centre].[C_ERR_ANO] 
            AND [LIBELLE] = [Centre].[LIBELLE])))
        ORDER BY Centre.[REFERENCE], Centre.[DATESE], Centre.[C_ERR_ANO]) 

    GROUP BY REFERENCE, DATESE, C_ERR_ANO

まだ動作していません

私は苦労しています

4

1 に答える 1

0

group by 句には、select にすべての項目を含める必要があります。使用しない理由:

Centre.DATESE、Centre.C_ERR_ANO、カウント(*)を選択

Centre.DATESE、Centre.C_ERR_ANO HAVING COUNT (*) > 5 でグループ化

他のフィールドが必要な場合は、同じフィールドがグループ化として選択に表示されることを確認する限り、それらを追加できます。

ここのフォーマットで何が起こっているのかわかりません!

于 2013-09-24T13:31:37.960 に答える