2017-09-26 11 views
0

サブクエリ内の列から一意の文字列の出現を数える列を作成したいとします。しかし、私は結果をグループ化したくありません。私はすべての元の行が必要です。カウントが次のように選択された他の投稿を見ました。テーブル1はデータベースには存在しませんが、サブクエリからはエラーコード1146が返されます。誰かがこれを行う別の方法を知っていますか?グループなしでサブクエリの一意の値を集計します。

SELECT table_1.columnA 
    ,table_1.columnB 
    ,table_2.CountB 
    , 
FROM (
    SELECT sometable.stuff AS 'columnA' 
     ,sometable.morestuff AS 'columnB' 
    FROM sometable 
    WHERE blah_blah_blah = blah 
    ) table_1 
    ,(
     SELECT columnB 
      ,count(columnB) AS 'CountB' 
     FROM table_1 
     ) table_2 
WHERE table_1.columnB = table_2.columnB 

所望の出力の例:
columnA columnB countBが
1レッド3
2グリーン2
3ブルー1
4グリーン2
5レッド3
6レッド3

+2

サンプルデータと予想される結果を記入してください。 –

+0

質問を編集して希望の結果を表示 –

答えて

0

サブクエリはcolumnBで数え、元のテーブルに戻って結合する必要があります。

select a.*, b.c 
from table_1 a 
join (
    select columnB, count(*) c 
    from table_1 
    group by columnB) b on a.columnB = b.columnB; 
+0

table_1から何も選択できないため、エラーが発生します。これはデータベース内の既存のテーブルではありません。これはクエリ内で作成されました。それが元の問題でした。 –

+0

'table_1'は実際のテーブル名のプレースホルダです。 – Fabricator

+0

はい、私が与えた例は、プレースホルダテーブルとカラム名を使用しています。このコンセプトを実際のクエリに適用しました。カウントしたい列は、エイリアス名が付いたサブクエリ内に作成されたテーブルから取得します。 "SELECT FROM"関数はデータベース内のテーブルを検索するため、このエイリアステーブル名を呼び出すことはできません。私は "FROM table_1"を使用せずに目的の列を数える別の方法を見つける必要があります。 –

関連する問題