我有两张桌子,一张是主人,另一张是工作台。
我需要加入两个表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
答案 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。