【发布时间】:2021-10-23 18:38:42
【问题描述】:
所以我有这张桌子:
| DATE | NAME | REFERENCE | ITEM_NUMBER | TOTAL |
|---|---|---|---|---|
| 03/06/2021 | XYC | SAFGASZXFEW | Z1-100-0006 | 102 |
| 03/06/2021 | XYC | SAFGASZXFEW | Z1-100-0002 | 200 |
| 03/06/2021 | XYC | SAFGASZXFEW | A2-50-0003 | 329 |
| 03/06/2021 | XYC | SAFGASZXFEW | A2-50-0007 | 431 |
| 03/07/2021 | ZBA | DSHDRFBVDRF | RV-100-0001 | 653 |
| 03/07/2021 | ZBA | DSHDRFBVDRF | RV-100-0004 | 222 |
| 03/07/2021 | ZBA | DSHDRFBVDRF | A2-50-0002 | 643 |
我尝试用这个查询转置 item_number 表:
SUM(CASE WHEN ITEM_NUMBER like '%-100-%' THEN CAST(TOTAL AS INT)END) 100_1ST,
SUM(CASE WHEN ITEM_NUMBER like '%-100-%' AND (**ITEM_NUMBER<>ITEM_NUMBER**) THEN CAST(TOTAL AS INT)END) 100_2ND,
SUM(CASE WHEN ITEM_NUMBER like '%-50-%' THEN CAST(TOTAL AS INT)END) 50_1ST,
SUM(CASE WHEN ITEM_NUMBER like '%-50-%' AND (**ITEM_NUMBER<>ITEM_NUMBER**) THEN CAST(TOTAL AS INT)END) 50_2ND,
我得到了结果:
| DATE | NAME | REFERENCE | 100_1ST | 100_2ND | 50_1ST | 50_2ND |
|---|---|---|---|---|---|---|
| 03/06/2021 | XYC | SAFGASZXFEW | 202 | NULL | 760 | NULL |
| 03/07/2021 | ZBA | DSHDRFBVDRF | 875 | NULL | 643 | NULL |
而我预期的结果是这样的:
| DATE | NAME | REFERENCE | 100_1ST | 100_2ND | 50_1ST | 50_2ND |
|---|---|---|---|---|---|---|
| 03/06/2021 | XYC | SAFGASZXFEW | 100 | 200 | 329 | 431 |
| 03/07/2021 | ZBA | DSHDRFBVDRF | 653 | 222 | 643 | NULL |
我知道我对 100_2ND 和 50_2ND 的条件语句的查询是错误的,我仍然不知道如何比较一列中的两个值,例如(Z1-100-0006 & Z1-100-0002) 它们具有相同的 '%-100-%' 属性,但仅通过它们的最后一位数字来区分,因此我可以将 TOTAL 值放入不同的列中。谁能帮帮我?
【问题讨论】:
标签: mysql sql conditional-statements transpose