2

KEY が 3 つの市販薬 (Motrin、Tylenol、Bayer) に関連付けられている場合にすべてのフィールド (SELECT *) を返す SQL クエリを Access で作成しようとしています。以下の例では、 のすべての行AMYZ32874が返され、 の行は 1 つも返されません。WillyV32906これは、彼が 3 つの薬のうち 2 つしか関連付けられていないためです。

開始データ:

Key         Name      DOB       OTC
AmyZ32874   Amy Z     1/1/1990  Motrin
AmyZ32874   Amy Z     1/1/1990  Tylenol
AmyZ32874   Amy Z     1/1/1990  Bayer
WillyV32906 Willy V   2/2/1990  Motrin
WillyV32906 Willy V   2/2/1990  Tylenol
WillyV32906 Willy V   2/2/1990  Tylenol

望ましい結果:

Key         Name      DOB       OTC
AmyZ32874   Amy Z     1/1/1990  Motrin
AmyZ32874   Amy Z     1/1/1990  Tylenol
AmyZ32874   Amy Z     1/1/1990  Bayer

私はかなり立ち往生しています....これは私の最新の試みです。

SELECT *
FROM SAMPLEDB
WHERE OTC IN ('Tylenol', 'Motrin', 'Bayer') and Key in
(SELECT Key FROM SAMPLEDB
GROUP BY Key HAVING COUNT (Key) > 2);
4

2 に答える 2

1

見るのは少し醜いですが、これはうまくいくはずだと思います:

SELECT 
  *
FROM 
  SAMPLEDB
WHERE 
  OTC IN ('Tylenol', 'Motrin', 'Bayer') 
  AND [Key] in
    (
      SELECT 
        [Key] 
      FROM 
        (
          SELECT 
            [Key]
            , OTC 
          FROM 
            SAMPLEDB
          WHERE 
            OTC IN ('Tylenol', 'Motrin', 'Bayer')
          GROUP BY 
            [Key]
            ,OTC 
        ) AS S1
      GROUP BY  
        [Key]
      HAVING 
        COUNT ([Key]) > 2
    );
于 2016-05-15T23:02:22.800 に答える
0

サブクエリに同じ「WHERE」ステートメントを入れる必要があります。

(SELECT Key FROM SAMPLEDB
WHERE OTC IN ('Tylenol', 'Mothrin', 'Bayer')
GROUP BY Key 
HAVING COUNT(Key) > 2)
于 2016-05-15T22:09:12.697 に答える