将两个表和列值连接为列

时间:2018-05-29 13:10:30

标签: mysql

我有两张桌子,一张是主人,另一张是工作台。

我需要加入两个表Item master和Fb,而Fb列值应该是列头如何为此写一个sql查询

Itemmaster表:

 barcode      | design   | shade| size | sleeve | brd| dept      |
+----------+-----------+-------+------+--------+-------------+-----------+
    |          |         |       |      |        |    |           |
    | OD132829 | 87282   | 1     | 36   | F/S    | CE | FORMAL SH |
    | OD132830 | 87282   | 1     | 38   | F/S    | CE | FORMAL SH |
    | OD132832 | 87282   | 1     | 40   | F/S    | CE | FORMAL SH |
    | OD132833 | 87282   | 1     | 42   | F/S    | CE | FORMAL SH |
    | OD132834 | 87282   | 1     | 44   | F/S    | CE | FORMAL SH |
    | OD132837 | 87282   | 2     | 36   | H/S    | CE | FORMAL SH |
    | OD132838 | 87282   | 2     | 38   | H/S    | CE | FORMAL SH |
    | OD132840 | 87282   | 2     | 40   | H/S    | CE | FORMAL SH |
    | OD132841 | 87282   | 2     | 42   | H/S    | CE | FORMAL SH |
    | OD132842 | 87282   | 2     | 44   | H/S    | CE | FORMAL SH |
    | OD132843 | 87282   | 2     | 46   | H/S    | CE | FORMAL SH |

布料表

Lot No             Job No        Barcode     design  shade qty
 LOT/001/17-18   JOB/001/17-18   OD132829    87282      1    3
 LOT/001/17-18   JOB/001/17-18   OD132830    87282      1   12
 LOT/001/17-18   JOB/001/17-18   OD132832    87282      1   13
 LOT/001/17-18   JOB/001/17-18   OD132833    87282      1    5
 LOT/001/17-18   JOB/001/17-18   OD132834    87282      1   11
 LOT/001/17-18   JOB/002/17-18   OD132837    87282      2   30
 LOT/001/17-18   JOB/002/17-18   OD132838    87282      2   34
 LOT/001/17-18   JOB/002/17-18   OD132840    87282      2   30
 LOT/001/17-18   JOB/002/17-18   OD132841    87282      2   13
 LOT/001/17-18   JOB/002/17-18   OD132842    87282      2    2
 LOT/001/17-18   JOB/002/17-18   OD132843    87282      2   11

我需要成为输出

Lot No             Job No        DEsign   shade   36  38  40  42  44  46 
LOT/001/17-18    JOB/001/17-18   87282     1       3  12  13   5  11
LOT/001/17-18    JOB/002/17-18   87282     2      30  34  30  13   2   11   

1 个答案:

答案 0 :(得分:0)

你是一个带窗口功能的连接。

SELECT 
    B.`Lot No`, B.`Job No`, B.design, B.shade, 
    SUM(IF(A.size=36,b.qty,0)) '36',
    SUM(IF(A.size=38,b.qty,0)) '38',
    SUM(IF(A.size=40,b.qty,0)) '40',
    SUM(IF(A.size=42,b.qty,0)) '42',
    SUM(IF(A.size=44,b.qty,0)) '44',
    SUM(IF(A.size=46,b.qty,0)) '46'
FROM Itemmaster A JOIN Fabric B
ON A.shade=B.shade AND A.design=B.design
GROUP BY B.`Lot No`, B.`Job No`, B.design, B.shade;

查看正在运行的DEMO on SQL Fiddle