在sql

时间:2018-05-28 17:45:36

标签: php sql-server

我有这张桌子 enter image description here

该表包含具有负号和正号的值的金额。我能够获得正数量的总和,但是在sumation之后我有零值,我不想显示它 - 它获取了所有值。

目标:获取金额和返回金额之和,没有零值。

到目前为止我尝试了什么

$ques = "select * from company";
$checks22y = sqlsrv_query($conn, $ques);
$row22y = sqlsrv_fetch_array($checks22y, SQLSRV_FETCH_ASSOC);
$daty = $row22y['BRSES_DATE']->format('Y-m-d H:m:i');
$com = $row22y['branch'];

$query =  "SELECT distinct ".$limitresult." Member.Branch,Member.GL_No,Member.Ac_NO,Member.BRANCH+Member.GL_NO+Member.AC_NO 
AS BRGLAC,Customer.Cust_No,Customer.Name,Group_Name,ID_CARD,Subgroup as subgroup2,
Cust_Type,Cust_Sex,Cust_Cat,Area_Code,Cust_Type,Dobirth,Address,Ref_No,Bank_VNO,Cust_Ca2,
nType,Group_Code FROM Member INNER JOIN CUSTACC ON Member.Branch = CustAcc.Branch  AND 
Member.GL_NO = CustACC.GL_No AND Member.AC_NO = CustACC.AC_No 
INNER JOIN Customer ON Member.Branch = Customer.Branch ".$branchid." AND Member.Cust_No = Customer.Cust_No ".$accnos." WHERE 
CUSTACC.Exp_Date < '$daty'  AND  MEMBER.Gl_NO IN (SELECT Coa.GL_NO FROM Coa WHERE Product  = 'S' ) AND cust_type IN ('IND','GRP','MEM')  ";

$check =  sqlsrv_query($conn, $query);
$i = 1;
while($rows = @sqlsrv_fetch_array( $check, SQLSRV_FETCH_ASSOC)) {

$ac = $rows['Ac_NO'];
$br = $rows['Branch'];

//Second sub query         
$get ="select  ac_no, gl_no, SUM(amount) as OutBalance,MAX(Batch_Date) AS Last_Trx2 from memtrans where gl_no like '2001%' 
and ac_no='$ac' group by ac_no, gl_no HAVING SUM(amount) > 0                            
";
$check2 = sqlsrv_query($conn, $get);  
$rowb = sqlsrv_fetch_array( $check2, SQLSRV_FETCH_ASSOC);

//Third sub query, OD history 
$od = "select od_limit from custacc where ac_no='$ac' and od_limit > '0'";
$odc = sqlsrv_query($conn, $od);  
$rowbo = sqlsrv_fetch_array( $odc, SQLSRV_FETCH_ASSOC);

}

结果 enter image description here

如果您查看未结余额,您会看到零值出现。

secon子查询是获取未结余额的地方。

1 个答案:

答案 0 :(得分:0)

Just solved it.

Here is the query I later used:

SELECT distinct ".$limitresult." member.Branch,Member.GL_No,Member.Ac_NO,Member.BRANCH+Member.GL_NO+Member.AC_NO 
AS BRGLAC,Customer.Cust_No,Customer.Name,Group_Name,ID_CARD,Subgroup as subgroup2,Cust_Type,Cust_Sex,Cust_Cat,Area_Code,Cust_Type,Dobirth,Address,Ref_No,Bank_VNO,Cust_Ca2,nType,Group_Code,  SUM(memtrans.amount) as OutBalance,MAX(memtrans.Batch_Date) AS Last_Trx2,company.BRSES_DATE, company.branch, CustACC.od_limit FROM Member INNER JOIN CUSTACC ON Member.Branch = CustAcc.Branch  AND Member.GL_NO = CustACC.GL_No AND Member.AC_NO = CustACC.AC_No INNER JOIN Customer ON Member.Branch = Customer.Branch    AND Member.Cust_No = Customer.Cust_No INNER JOIN memtrans ON memtrans.ac_no = member.ac_no  INNER JOIN company ON company.branch = member.branch ".$branchid."  ".$accnos." WHERE CUSTACC.Exp_Date < company.BRSES_DATE  AND CUSTACC.od_limit > '0.00' AND  MEMBER.Gl_NO IN (SELECT Coa.GL_NO FROM Coa WHERE Product  = 'S' ) AND cust_type IN ('IND','GRP','MEM') group by memtrans.ac_no, memtrans.gl_no,company.branch, member.branch, member.gl_no,Member.ac_no,
Customer.cust_no, Customer.name, Customer.group_name,Customer.id_card,Customer.subgroup,Customer.cust_type,
Customer.cust_sex, Customer.cust_cat,Customer.area_code,Customer.dobirth,Customer.address,Customer.ref_no, Customer.Bank_VNO,Customer.cust_ca2,Customer.ntype,Customer.group_code,company.BRSES_DATE,CUSTACC.od_limit HAVING SUM(memtrans.amount) > 0)

Thanks guys. From a grateful heart.