как сделать так, чтобы набор результатов стал моим утверждением выбора? - PullRequest
0 голосов
/ 08 октября 2009

Моя проблема заключается в том, что это приложение развернуто с учетом множества различных способов оплаты, и эти варианты оплаты варьируются от одного развертывания к другому.

У меня вопрос, как сделать так, чтобы набор результатов стал моим оператором выбора?

SELECT DISTINCT(CONCAT('SUM(IF(pay_type = "',pay_type,'", pay_amt,0)) AS `',pay_type,'`')) as queryFields
FROM transaction_payments;

Что дает мне этот результат:

SUM(IF(pay_type = "Cash", pay_amt,0)) AS `Cash`, SUM(IF(pay_type = "Credit Card", pay_amt,0)) AS `Credit Card`
SUM(IF(pay_type = "Discount %", pay_amt,0)) AS `Discount %`, SUM(IF(pay_type = "Gift Card", pay_amt,0)) AS `Gift Card`
SUM(IF(pay_type = "Coupon", pay_amt,0)) AS `Coupon`
SUM(IF(pay_type = "Gift Certificate", pay_amt,0)) AS `Gift Certificate`
SUM(IF(pay_type = "Discount Amt.", pay_amt,0)) AS `Discount Amt.

Это становится моим оператором select в следующем запросе, но код для этого довольно громоздкий. Я хочу знать, возможно ли это сделать одним запросом без помощи кода приложения.

1 Ответ

0 голосов
/ 08 октября 2009

используя SQL для построения SQL? РЭБ. * Дрожь *

Я бы предположил, что ваш подход неверен. вместо того, чтобы получать все в одной строке, вы должны получить в несколько строк:

select pay_type
     , sum(pay_amt) as pay_amt
  from transaction_payments
group
    by pay_type

если вы хотите поместить это в горизонтальную таблицу, то делайте это на языке вашего хоста.

если вы пытаетесь использовать это в еще одном запросе, вам нужно предоставить больше контекста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...