2017-12-22 3 views
1

、GROUP BYであるべきというエラーを与える:DISTINCT ONはまだ私の選択項目は次のように私は、顧客IDと日付のリストのリストを持つテーブルがある

id |take_list_date | customer_id 
1 |2016-02-17  | X00001 
2 |2016-02-20  | X00002 
3 |2016-02-20  | X00003 

私は数を返すようにしようとしています

ラベル:2016年2月20日値:

:2

次のクエリは、指定した日付範囲内で必要な結果を生成し、次の形式の特定の日のテーブル内のすべてのIDの

select 
    count(customer_id)::int as value, 
    take_list_date::varchar as label 
FROM  
    customer_take_list 
where 
    take_list_date >= '10-12-2017' 
and 
    take_list_date <= '20-12-2017' 
GROUP BY  
    take_list_date 
ORDER BY  
    take_list_date 

Ember Dataと互換性を持たせるためにIDフィールドを含める必要があります。 IDフィールドを含めると、Group By節に追加して不正な結果を生成する必要があります。奇妙な話、これはまだ私のエラーにより、同じグループを与える

select distinct on 
    (take_list_date) take_list_date::varchar as label 
    count(customer_id)::int as value 
FROM  
    customer_take_list 
where 
    take_list_date >= '10-12-2017' 
and 
    take_list_date <= '20-12-2017' 
order by 
    take_list_date 

:私はDISTINCT使用してこの問題を解決しようとした他のSOの質問にいくつかの提案を見た後

。私は何を間違えたのですか?

答えて

1

私は関連する技術の専門家ではありませんが、私はテーブルのIDの1つを使用するのではなく、任意のIDを作成する必要があると思います。例はここにあります:Add Postgres incremental ID。あなたの最終的なクエリは次のようになるはずです:

SELECT 
    COUNT(customer_id)::int as value, 
    take_list_date::varchar as label, 
    ROW_NUMBER() OVER (ORDER BY take_list_date) AS id 
FROM  
    customer_take_list 
where 
    take_list_date >= '10-12-2017' 
and 
    take_list_date <= '20-12-2017' 
GROUP BY  
    take_list_date 
ORDER BY  
    take_list_date 
+0

私はそれが「ダミー」IDを使用するようなものだと思っていましたが、クエリでそれを実現できないと思っていました。どうもありがとう! – Sorvah

関連する問題