1
我正在寻找将行分成2行或3行。这可能吗?
我有一个表,显示行情如下:SQL:将单行分成2行或3行
表名:行情
ID | NAME | BusCost | TaxiCost | TrainCost
-------------------------------------------
01 | Steve | NULL | 25 | NULL
02 | Barry | 15 | 30 | NULL
03 | Bob | 150 | 400 | 300
但我想说明这样的行情:
ID | Name | Cost
------------------
01 | Steve | 25
02 | Barry | 15
02 | Barry | 30
03 | Bob | 30
03 | Bob | 100
03 | Bob | 70
我猜我我将需要使用某种UNION
来做到这一点,但我很茫然。我对SQL相对比较陌生,并且希望任何人都能指向正确的方向。
我来(不是很紧密要么)最接近的是这样:
SELECT COST
FROM
(
SELECT BusCost AS COST FROM Quotes
UNION
SELECT TaxiCost AS COST FROM Quotes
UNION
SELECT TrainCost AS COST FROM Quotes
) A
GROUP BY COST
SELECT id, name FROM Quotes
UNION ALL
SELECT COST
FROM
(
SELECT BusCost AS COST FROM Quotes
UNION
SELECT TaxiCost AS COST FROM Quotes
UNION
SELECT TrainCost AS COST FROM Quotes
) A
GROUP BY COST
任何帮助将不胜感激。
'UNION'删除重复项,所以如果Bob在busride上花费30美元而在训练器上花费30美元,则最终只会输入一个'30'项。要保持重复,请使用'UNION ALL'。您也可能想看看'PIVOT'' – HoneyBadger
您对Bob的期望结果似乎与输入数据不匹配。是否有一些特殊的数学运算,还是仅仅是一个错字? –