0

名前、アクション、およびカウントを、名前 ASC、アクション ASC で次のように並べ替える Postgres から選択しています。

SELECT u.firstname || ' ' || u.surname AS user,
    nt.name AS action,
    cn.count
FROM (
    SELECT actioned_by_id, note_type_id, COUNT(id) AS count
    FROM customer_notes
    WHERE actioned_date IS NOT NULL 
    GROUP BY actioned_by_id, note_type_id
) AS cn
LEFT JOIN note_type AS nt ON cn.note_type_id = nt.id
LEFT JOIN users as u on cn.actioned_by_id = u.id
WHERE cn.actioned_by_id IS NOT NULL 
ORDER BY user, action;

ただし、結果は、ユーザー句を無視し、アクションによる順序付けのみを行っていることを示しています。

"ADMIN USER" "CALL OUT"   1
"ADMIN USER" "EMAIL"      1
"ADMIN USER" "LETTER"     2
"AA AA"      "MEETING"    1
"ADMIN USER" "PHONECALL"  7
"AA AA"      "PHONECALL"  1

誰もが理由を理解していますか?そして、それを適切に注文する方法は?

4

3 に答える 3

3

userは予約語です - 現在のユーザー名を返します

試す

order by u.firstname || ' ' || u.surname, action
于 2012-09-13T12:18:27.913 に答える
0

この順序句を試してください:-

ORDER BY u.firstname || ' ' || u.姓、アクション;

派生列であるため、列 USER による順序を無視していると思います。派生の名前ではなく、派生自体を指定する必要があります。

于 2012-09-13T12:22:54.883 に答える
0

列の位置を使用して並べ替えを試みる

SELECT u.firstname || ' ' || u.surname AS user,
    nt.name AS action,
    cn.count
FROM (
    SELECT actioned_by_id, note_type_id, COUNT(id) AS count
    FROM customer_notes
    WHERE actioned_date IS NOT NULL 
    GROUP BY actioned_by_id, note_type_id
) AS cn
LEFT JOIN note_type AS nt ON cn.note_type_id = nt.id
LEFT JOIN users as u on cn.actioned_by_id = u.id
WHERE cn.actioned_by_id IS NOT NULL 
ORDER BY 1, 2;
于 2012-09-13T12:19:17.310 に答える