Mam stół w MYSQL o nazwie permit_bills który zawiera kolumny jako bill_no, alcohol_typ, origin, 2000ml 1000ml , bill_date. Tabela jest pokazana poniżej:

    +---------+--------------+---------+--------+--------+-----------+
    | bill_no | alcohol_typ  | origin  | 2000ml | 1000ml | bill_date |
    +---------+------------- + --------+--------+--------+-----------+
    |  2001   |    s         |   f     |   2    |    1   |01-02-2017 |
    |  2001   |    m         |   w     |   3    |    4   |01-02-2017 |
    +---------+--------------+---------+--------+--------+-----------+

Chcę wybrać wszystkie wiersze z powyższej tabeli do jednego wiersza na podstawie ich bill_no i bill_date i chcesz wyświetlić kolumny 2000ml i 1000ml zgodnie z ich {x3}} X4}} i "pochodzenie".

Mój stół wyjściowy musi być taki:

    +---------+--------------+-------------+------------+------------+-----------+
    | bill_no | s_f_2000ml   | s_f_1000ml  | m_w_2000ml | m_w_1000ml | bill_date |
    +---------+------------- + ------------+------------+------------+-----------+
    |  2001   |      2       |     1       |     3      |     4      |01-02-2017 |
    +---------+--------------+-------------+------------+------------+-----------+
1
WASEEM 16 luty 2017, 13:59

2 odpowiedzi

Najlepsza odpowiedź

Wypróbuj zapytanie (Pivot) -

SELECT
  bill_no,
  MAX(IF(alcohol_typ = 's' AND origin = 'f', `2000ml`, NULL)) AS s_f_2000ml,
  MAX(IF(alcohol_typ = 's' AND origin = 'f', `1000ml`, NULL)) AS s_f_1000ml,
  MAX(IF(alcohol_typ = 'm' AND origin = 'w', `2000ml`, NULL)) AS m_w_2000ml,
  MAX(IF(alcohol_typ = 'm' AND origin = 'w', `1000ml`, NULL)) AS m_w_1000ml,
  bill_date
FROM permit_bills
  GROUP BY bill_no, bill_date
0
Devart 16 luty 2017, 11:17

Czy jesteś pewien, że Twoja tabela wyjściowa potrzebuje ?

Zamiast tego może być korzystanie z funkcji grupy_concat, która jest czasami niezwykle przydatnym narzędziem. Musisz podzielić lub eksplodować wartości w aplikacji, ale może być wszystko, czego potrzebujesz.

https://dev.mysql.com/doc/refman/5.7/pl/group-by-functions.html#function_group-concat.

0
scipilot 16 luty 2017, 11:26