Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL се присъединява към една и съща таблица два пъти в една и съща колона с различна стойност, връщаща само последния ред

Опитайте

SELECT i.id,  
       i.address, 
       i.status,
       p.max_date contract_date, 
       p.basis_value contract_price, 
       e.max_date estimate_date, 
       e.basis_value estimate_value
  FROM Instructions i LEFT JOIN
(
    SELECT q1.instruction_id, max_date, basis_value
      FROM Estimates e JOIN
    (
        SELECT instruction_id, MAX(basis_date) max_date
          FROM Estimates
         WHERE basis = 'CustomerEstimate'
         GROUP BY instruction_id
    ) q1 ON e.instruction_id = q1.instruction_id AND e.basis_date = q1.max_date
) e ON i.id = e.instruction_id LEFT JOIN
(
    SELECT q2.instruction_id, max_date, basis_value
      FROM Estimates e JOIN
    (
        SELECT instruction_id, MAX(basis_date) max_date
          FROM Estimates
         WHERE basis = 'ContractPrice'
         GROUP BY instruction_id
    ) q2 ON e.instruction_id = q2.instruction_id AND e.basis_date = q2.max_date
) p ON i.id = p.instruction_id
 

Изход:

<пред>| ID | АДРЕС | СТАТУС | CONTRACT_PRICE | CONTRACT_DATE | ESTIMATE_VALUE | ESTIMATE_DATE |------------------------------------------------ -------------------------------------------------- -------------------------| 1 | 27 TAYLOR ROAD, ALBION PARK NSW 2527 | В ход | 140000 | 2013-01-03 | 145000 | 09.02.2013 г. |

Ето SQLPiddle демонстрация.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. InnoDB:Грешка номер 23 на операционната система във файлова операция

  2. Форматирайте число като процент в MySQL

  3. Генерирайте изрази CREATE за всички MySql таблици

  4. проста SQL заявка, която дава невалидно използване на групова функция

  5. MySQL | REGEXP VS Like