我的数据库中有两个表,一个是Syncbill
,另一个是Paymentmode
。我有几列代表付款类型,例如现金,Paytm,其他是Syncbill
,Otherpayment1
,依此类推。
我的数据库中还有一个名为OtherPayment2
的表,其中定义了其他付款方式名称,例如paymentmode
在那里很呆。
表同步表
表付款方式
结果表/输出
我想知道查询是否完成
我面临的问题是:
OtherPayment1
表中建立的关系有四列分别命名为Paymentmode
,Position
,Paymentcode
和Paymentname
,其中位置定义为1,2,3,4,依此类推,所以这些1,2,3 ...以及其他表格IsActive
,Otherpayment1
..此处1,2,3定义了付款方式现在我想做的是从两个表中获取数据,但是作为Otherpayment2
的位置,我想在其他表(Otherpayment1
)中的位置1
如表Paymentmode
所示,我有一列Paymentmode
,所以我只想获取具有IsActive
PaymentNames
我之前在做什么:
我正在编写此查询:
IsActive='Y'
我是我的Java servlet,我正在使用 SELECT billdate,SUM(paytm) paytm,SUM(cash) cash,
SUM(otherpayment1) Swiggy, SUM(otherpayment2) KB,SUM(otherpayment3) BigBasket,SUM(otherpayment4)
Zomato FROM syncbill WHERE a.BILLDATE BETWEEN '2018-08-05' AND '25018-08-10'
从数据库中获取值,然后将其存储到List中,然后使用resultset.getstring
这样将其转换为JSON
GSON
但是这不是解决方案,因为我正在获取KB,将所有这些都硬编码。
答案 0 :(得分:1)
这可以通过使用2个sql查询来完成
//to convert row on Paymentmode table into column name of syncbill table
String q1 = "select concat('OTHERPAYMENT',p) as op from Paymentmode where IsActive=Y";
rs = stmt.executeQuery(q1);
String str = "";
while(rs.next()) {
str += rs.getString(1) + ",";
}
//to get desired result
String q2 = "select Paytm, Cash," + str.substring(0, str.length()-1) +" from syncbill";
// below this execute q2