CaseWhen.java
1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.skua.tool.dfs;
/**
* <pre>
* cash when 拼接
* </pre>
*
* @author sonin
* @version 1.0 2023/11/23 16:49
*/
public class CaseWhen {
private String SPACE = " ";
private String COMMA = ",";
private String DOUBLE_QUOTES = "\"";
private StringBuilder caseWhenSB = new StringBuilder();
public CaseWhen selectCaseWhen(String caseWhen, String then, String els, String alias) {
caseWhenSB.append(COMMA).append(SPACE).append("ifnull(sum(case when (").append(caseWhen).append(") then ").append(then).append(" else ").append(els).append(" end), 0) as ").append(DOUBLE_QUOTES).append(alias).append(DOUBLE_QUOTES);
return this;
}
public CaseWhen selectCaseWhen(String caseWhen, String alias) {
selectCaseWhen(caseWhen, "1", "0", alias);
return this;
}
public CaseWhen selectPgCaseWhen(String caseWhen, String then, String els, String alias) {
caseWhenSB.append(COMMA).append(SPACE).append("COALESCE(sum(case when (").append(caseWhen).append(") then cast(").append(then).append(" as float) else ").append(els).append(" end), 0) as ").append(DOUBLE_QUOTES).append(alias).append(DOUBLE_QUOTES);
return this;
}
public CaseWhen selectPgCaseWhen(String caseWhen, String alias) {
selectPgCaseWhen(caseWhen, "1", "0", alias);
return this;
}
/**
* <pre>
* mysql返回BigDecimal类型; pg返回Double类型
* </pre>
*
* @param
* @author sonin
* @Description: TODO(这里描述这个方法的需求变更情况)
*/
public String print() {
return caseWhenSB.toString().replaceFirst(COMMA + SPACE, "");
}
}