一张数据库表有总库存,泉州库存,海外库存,,现在要转换成每个库存按照部门(B2B,B2C,主仓,内贸,DK)的库存数量,部门为作为表头,各个库存作为数值,用sql写出来
时间: 2024-09-06 15:04:27 浏览: 17
要实现这样的需求,我们可以使用SQL中的`CASE`语句或条件聚合函数来根据库存类型和部门生成新的表头和对应的数值。以下是一个使用MySQL的示例SQL查询,这个查询假设原始表名为`stocks`,并且表中有一个字段`department`表示部门类型,`stock_type`表示库存类型(总库存,泉州库存,海外库存等),以及`quantity`表示库存数量。
```sql
SELECT
SUM(CASE WHEN stock_type = '总库存' THEN quantity ELSE 0 END) AS total_stock,
SUM(CASE WHEN stock_type = '泉州库存' THEN quantity ELSE 0 END) AS quanzhou_stock,
SUM(CASE WHEN stock_type = '海外库存' THEN quantity ELSE 0 END) AS overseas_stock,
SUM(CASE WHEN department = 'B2B' THEN quantity ELSE 0 END) AS department_b2b,
SUM(CASE WHEN department = 'B2C' THEN quantity ELSE 0 END) AS department_b2c,
SUM(CASE WHEN department = '主仓' THEN quantity ELSE 0 END) AS department_zw,
SUM(CASE WHEN department = '内贸' THEN quantity ELSE 0 END) AS department_nei_mao,
SUM(CASE WHEN department = 'DK' THEN quantity ELSE 0 END) AS department_dk
FROM
stocks;
```
这个查询会对每种库存类型和部门类型进行条件求和。`SUM`函数会累加`quantity`字段的值,而`CASE`语句确保只有符合特定条件的行才会被累加。注意,这会生成一个汇总行,而不是一个每个部门每种库存类型的表。如果你想要为每个部门生成单独的行,你需要根据具体的数据库表结构和数据进一步细化这个查询。