2

私は Netezza で QA を行っており、2 つの別個の SQL ステートメントのカウントを比較する必要があります。これは私が現在使用しているSQLです

SELECT COUNT(*) AS RECORD_COUNT  
FROM db..EXT_ACXIOM_WUL_FILE  A
LEFT JOIN (select distinct CURRENTLY_OPTED_IN_FL,mid_key from db..F_EMAIL) B
ON A.MID_KEY=B.MID_KEY
MINUS
SELECT COUNT(*)
FROM db..EXT_ACXIOM_WUL_FILE  A

ただし、MINUS はそのようには機能しないようです。カウントが一致すると、0 を返す代わりに、これは Record_count に対して null を返します。基本的に、レコード数は次のように計算されます。

record_count=count1-count2

したがって、カウントが等しい場合は 0、そうでない場合は差です。これに対する正しい SQL は何ですか?

4

3 に答える 3

4
SELECT
(
SELECT COUNT(*) AS RECORD_COUNT  
FROM db..EXT_ACXIOM_WUL_FILE  A
LEFT JOIN (select distinct CURRENTLY_OPTED_IN_FL,mid_key from db..F_EMAIL) B
ON A.MID_KEY=B.MID_KEY
)  -
(
SELECT COUNT(*)
FROM db..EXT_ACXIOM_WUL_FILE  A
) TotalCount

OracleのMINUSEXCEPTSQL Serverの)はまったく別の動物です:)

UNION集合を理解してから考えれば理解できるMINUS/EXCEPT

于 2011-10-17T20:54:37.423 に答える
1

これはあなたが探しているものかもしれないと思います

    SELECT COUNT(distinct(CURRENTLY_OPTED_IN_FL + F_EMAIL.MID_KEY)) - count(distinct(EXT_ACXIOM_WUL_FILE.MID_KEY))
    FROM EXT_ACXIOM_WUL_FILE 
    LEFT OUTER JOIN F_EMAIL
      ON JOIN F_EMAIL.MID_KEY = EXT_ACXIOM_WUL_FILE.MID_KEY
于 2011-10-17T21:09:13.013 に答える
1

MINUS算術演算用ではなく、設定差です。

あなたができる

SELECT COUNT(*) - (SELECT COUNT(*)
                   FROM   db..EXT_ACXIOM_WUL_FILE A) AS Val
FROM   db..EXT_ACXIOM_WUL_FILE A
       LEFT JOIN (select distinct CURRENTLY_OPTED_IN_FL,
                                  mid_key
                  from   db..F_EMAIL) B
         ON A.MID_KEY = B.MID_KEY  

または別のオプション

SELECT COUNT(*) - COUNT(DISTINCT A.PrimaryKey) AS Val
FROM   db..EXT_ACXIOM_WUL_FILE A
       LEFT JOIN (select distinct CURRENTLY_OPTED_IN_FL,
                                  mid_key
                  from   db..F_EMAIL) B
         ON A.MID_KEY = B.MID_KEY  
于 2011-10-17T20:55:06.580 に答える