• Does this not work?

    CREATE TABLE MyTable

    (

    _key_out VARCHAR(10)

    , myval int

    );

    INSERT INTO mytable SELECT 'A', 1

    INSERT INTO mytable SELECT 'A', 2

    INSERT INTO mytable SELECT 'B', 1

    INSERT INTO mytable SELECT 'C', 3

    CREATE TABLE MyTable2

    (

    _key_out VARCHAR(10)

    , myval int

    );

    INSERT INTO mytable2 SELECT 'A', 1

    INSERT INTO mytable2 SELECT 'B', 2

    INSERT INTO mytable2 SELECT 'B', 3

    INSERT INTO mytable2 SELECT 'C', 3

    EXEC sp_MSforeachtable 'select tablename=''?'', count(distinct _key_out) from ?'

    Gives 3.

    If I do this:

    EXEC sp_MSforeachtable 'select tablename=''?'', count( _key_out) from ?'

    I get 4.