我的问题是,此应用程序在部署时考虑了许多不同的付款方式,这些付款方式因部署而异。
我的问题是,如何将一组结果变成我的选择语句?
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语句,但执行此操作的代码非常麻烦。我想知道在没有应用程序代码帮助的情况下是否可以在单个查询中执行此操作。
答案 0 :(得分:0)
使用SQL构建SQL? EW。 * *不寒而栗
我会建议你的方法是错误的。而不是将所有内容都放在一行中,而应该将它放在多行中:
select pay_type
, sum(pay_amt) as pay_amt
from transaction_payments
group
by pay_type
如果你想把它放在一个水平表中,那就用你的宿主语言来做。
如果你想在另一个查询中使用它,那么你需要提供更多的上下文。