SQL запрос, порядок по значению, когда поле соответствует - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть данные следующим образом:

data_id   name            value
-----------------------------------------
1        Address123       my street
1        Order-Date        12/23/2018 
1        firstName        Joe    
2        Address          345 other street
2        Order-Date        12/31/2018
2        firstName        Peter

... и т. Д.

Как мне написать запрос для возврата данных, упорядоченных по OrderDate, используя ID какГруппа

например,

SELECT * 
FROM wp_cf7_data_entry 
WHERE cf7_id = 7 
AND data_id IN (SELECT * 
                FROM (
                  SELECT data_id 
                  FROM wp_cf7_data_entry 
                  WHERE 1 = 1 
                   AND cf7_id = 7 
                  GROUP BY data_id 
                  ORDER BY case 
                               when name = 'order-date' THEN 'value' 
                           end DESC,'data_id') 

В основном я хочу использовать подзапрос в качестве порядка, поэтому результаты сортируются по дате-дате.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Вам не нужна группа, так как я вижу, что для каждого идентификатора есть только одно поле имени, как orderdate

    SELECT * FROM TABLE WHERE NAME_FIELD = 
   'OrderedDate' order by NAME_FIELD
0 голосов
/ 13 декабря 2018

Я предполагаю, что вы хотите использовать conditional aggregation:

select id, 
       max(case when name_field = 'OrderDate' then value end) as OrderDate,
       max(case when name_field = 'Address' then value end) as Address,
       max(case when name_field = 'Name' then value end) as Name
from yourtable
group by id
order by max(case when name_field = 'OrderDate' then value end)

Это создает одну строку для каждого id и упорядочивает результаты по значению даты заказа.

...