0

テーブルAについて考えてみます。テーブルAには、主キーではなく、一意でもなく、nullになる可能性のあるINNETTEDTXNIDという名前の列があります。

いくつかの条件(列INNETTEDTXNIDとは関係ありません)に基づいて、テーブルAにselect*があります。

上記でフェッチされた行ごとに、isNettedという値を見つける必要があります。isNettedの概念は、この行の列INNETTEDTXNIDがテーブル全体(この行を含む)に複数回存在する場合、isNettedの値はこの行に対して真になるということです。

私の質問が明確であることを願っています。よろしくお願いします。

4

2 に答える 2

1

おそらく最も効率的な場所にはほど遠いですが、機能します。

SELECT TableA.INNETTEDTXNID, 
 CASE
 WHEN NetChk.INNETTEDTXNID IS NOT NULL Then 1
 ELSE 0
 END AS isNetted
FROM TABLEA
LEFT JOIN (
          SELECT INNETTEDTXNID 
          FROM TableA
          GROUP BY INNETTEDTXNID
          HAVING COUNT(INNETTEDTXNID) >1) 
NetChk ON TableA.INNETTEDTXNID = NetChk.INNETTEDTXNID
于 2012-04-30T12:59:03.773 に答える
1

これにより、複数回出現するエントリの値が返されます。

SELECT a.INNETTEDTXNID
FROM TableA as a, TableA as b
WHERE
    not a.id=b.id
    and a.INNETTEDTXNID=b.INNETTEDTXNID

単一の数字が複数回表示されるかどうかを特に確認するためにこれを実行しようとすると、次のようなことができます

SELECT COUNT(INNETTEDTXNID)
FROM TableA
WHERE INNETTEDTXNID='value'

1つを返す場合は一意であり、複数の場合は一意ではありません。true または false のようなものを返したい場合は、使用できます

SELECT 
    CASE WHEN (
        SELECT COUNT(INNETTEDTXNID)
        FROM TableA
        WHERE INNETTEDTXNID='value'
    )>1 THEN 'True'
    ELSE 'False'
    END
    AS isNetted
于 2012-04-30T13:58:13.620 に答える