Amazon предлагает своим клиентам на рынке информацию о CSV-отчете, который содержит информацию о каждой проданной вами статье. Есть четыре строки в статье, глядя, как это:Объединить поля из разных строк по условию
+----------------------+------------+-------------------+--------+
| orderid | amounttype | amountdescription | amount |
+----------------------+------------+-------------------+--------+
| 305-2406165-0572365 | ItemPrice | Principal | 2.98 |
| 305-2406165-0572365 | ItemPrice | Shipping | 3.89 |
| 305-2406165-0572365 | ItemFees | Commission | -0.45 |
| 305-2406165-0572365 | ItemFees | ShippingHB | -0.59 |
+----------------------+------------+-------------------+--------+
Как вы можете видеть, каждая статья имеет четыре ряда, два для фактической продажной цены и два для платы я должен заплатить, чтобы Amazon.
Я импортирую этот CSV-файл в SQL-таблицу, используя MySQL. Выбор некоторых данных, включая цену выглядит следующим образом:
SELECT DISTINCT
report.posteddate AS Date,
orders.OrderID,
orders.ExternalOrderID AS AZNr,
report.amount AS ArtPrice
FROM
report,
orders
WHERE
orders.ExternalOrderID = report.orderid
AND report.amountdescription = 'Principal'
AND report.transactiontype = 'Order'
ORDER by Date DESC
Чтобы получить только цену товара без груза я сделать выбор, чтобы получить только те строки, где amountdescription является «Главным». Тип транзакции можно игнорировать, чтобы решить мою проблему.
Что я хочу сделать:
Я хочу, чтобы извлечь оба поля суммы, где amounttype является «ItemFees», добавьте их вместе и отображать результат в виде одного поля. После этого выбора, строка должна выглядеть следующим образом:
+------------+---------+---------------------+----------+-------+
| Date | OrderID | AZNr | ArtPrice | Fees |
+------------+---------+---------------------+----------+-------+
| 24.07.2014 | 267720 | 305-2406165-0572365 | 2.98 | -1.04 |
+------------+---------+---------------------+----------+-------+
Я попытался запустить подзапрос для обоих рядов с выбором для amounttype = «ItemFees» и объединить результаты, но я в конечном итоге с ошибкой сказать, что мой подзапрос возвращает более одной строки. Это запрос:
SELECT DISTINCT
report.posteddate AS Date,
orders.OrderID,
orders.ExternalOrderID AS AZNr,
report.amount AS ArtPrice,
(SELECT
SUM(report.amount)
FROM
report,
orders
WHERE
orders.ExternalOrderID = report.orderid
AND report.amountdescription = 'Commission') +
(SELECT
SUM(report.amount)
FROM
report,
orders
WHERE
orders.ExternalOrderID = report.orderid
AND report.amountdescription = 'ShippingHB') AS Fees
FROM
report,
orders
WHERE
orders.ExternalOrderID = report.orderid
AND report.amountdescription = 'Principal'
AND report.transactiontype = 'Order'
ORDER by Date DESC
Кто-нибудь есть идея, как суммировать два значения из двух разных строк с заданным условием (см WHERE-условие)? Кроме того, мне нужно извлечь стоимость доставки, но я думаю, что это тот же вопрос.
Заранее спасибо.
Вы использовали СУММ (сумму) в своем подзапросе? – Ian
Да, но я только что получил тысячу полей, которые содержали одно и то же значение. – Ceriana
Можете ли вы обновить свой вопрос с полным SQL-запросом, который не работал, включая подзапрос, который дает вам тысячи полей? – Ian