将所有数据与唯一ID组合 - MySQL

时间:2017-09-06 03:46:43

标签: mysql select

我从我当前的查询获得了这些数据。 enter image description here

我想要做的是组合并使其成为单行,其中类型为高级,cashamount和Tenderamount也是相同的。

这是期望的结果: enter image description here

我从

获取数据

enter image description here

这是我的查询:

SELECT a.DATE as `DATE`, a.employee as `EMPLOYEE`,  a.TYPEID, a.NAME as 
`NAME`, (select (case when a.typeid = 1 then a.amount else NULL end)) as 
`CASHAMOUNT`, 
(select (case when a.typeid <> 1 then a.amount else NULL end)) as 
`TENDERAMOUNT`, (select gndtndr.IDENT from gndtndr where gndtndr.TYPE = 12 
and `gndtndr`.`CHECK`= a.CHECK and gndtndr.DATE = a.DATE) as `ID`,  
from gndtndr a
where STR_TO_DATE(a.DATE, '%m/%d/%Y') BETWEEN '20170901' AND '20170901' 
order by STR_TO_DATE(a.DATE, '%m/%d/%Y')

2 个答案:

答案 0 :(得分:0)

我的MySQL有点生疏,但试一试!

SELECT a.Date, a.Employee, a.Name, a.ID, SUM(b.Amount) AS CashAmount, 
SUM(c.Amount) AS TenderAmount FROM 
(SELECT DISTINCT Date, Employee, Name, ID FROM gndtndr WHERE Type = 12) AS a
LEFT JOIN gndtndr AS b
ON a.ID = b.ID AND b.TypeID = 1
LEFT JOIN gndtdr AS c
ON a.ID = c.ID and c.TypeID <> 1
GROUP BY a.Date, a.Employee, a.Name, a.ID

答案 1 :(得分:0)

我已经明白了:)我只需要在where子句中定义类型条件,其中类型为1(现金)。

SELECT a.DATE as `DATE`, a.employee as `EMPLOYEE`,  a.TYPEID, a.NAME as 
`NAME`, (select sum(gndtndr.amount) from gndtndr where gndtndr.typeid = 1 
and gndtndr.`CHECK` = a.`CHECK` and gndtndr.DATE = a.DATE) as `CASHAMOUNT`, 
(select (case when a.typeid <> 1 then a.amount else NULL end)) as 
`TENDERAMOUNT`, (select gndtndr.IDENT from gndtndr where gndtndr.TYPE = 12 
and `gndtndr`.`CHECK`= a.CHECK and gndtndr.DATE = a.DATE) as `ID` from 
gndtndr a
where a.TYPEID <> 1 and STR_TO_DATE(a.DATE, '%m/%d/%Y') BETWEEN '20170901' 
AND '20170901' order by STR_TO_DATE(a.DATE, '%m/%d/%Y')