这是桌子goodandcat
项目 | 钥匙 |
---|---|
电子 | 0 |
智能手机 | 1 |
笔记本电脑 | 1 |
相机 | 1 |
耳机 | 1 |
服装 | 0 |
T恤 | 1 |
牛仔裤 | 1 |
连衣裙 | 1 |
夹克 | 1 |
Item 列有类别和商品的名称,Key 列中分别有 0 和 1。 需要将所有类别和商品提取到两个不同的列中,例如“商品”和“类别”。因此,每个商品项目在每一行中都必须有其各自的类别项目。
我尝试执行此SQL
SELECT
CASE WHEN Key = 0 THEN Item ELSE NULL END AS Category,
CASE WHEN Key = 1 THEN Item ELSE NULL END AS Goods
FROM goodsandcat;
查询结果为:
类别 | 商品 |
---|---|
电子 | 空 |
空 | 智能手机 |
空 | 笔记本电脑 |
空 | 相机 |
空 | 耳机 |
服装 | 空 |
空 | T恤 |
空 | 牛仔裤 |
空 | 连衣裙 |
空 | 夹克 |
但预计将按各自的类别项填写类别列中的所有 NULL。所以,它一定是这样的:
类别 | 商品 |
---|---|
电子 | 空 |
电子 | 智能手机 |
电子 | 笔记本电脑 |
电子 | 相机 |
电子 | 耳机 |
服装 | 空 |
服装 | T恤 |
服装 | 牛仔裤 |
服装 | 连衣裙 |
服装 | 夹克 |
如何编写sql查询以获得上述结果?
电子产品和商品之间没有关系,服装和服装项目您可以将电子产品更改为0,将电子产品更改为1,类似地将服装更改为2,将服装项目更改为3,然后相应地更改您的sql查询。