2016-10-22 2 views
0

테이블 tbl_remit이 있습니다.mysql에서 2 개의 날짜를 기준으로 레코드를 선택하는 방법

|RemitNo|id|emp|emp_loc| emp_cat |ap_from| ap_to |amount| 
| 1 |1 | a | PAL | PRIVATE |12/2015|12/2015| 50.00| 
| 2 |1 | a | PAL | PRIVATE |01/2016|01/2016|100.00| 
| 3 |1 | a | PAL | PRIVATE |02/2016|02/2016|100.00| 
| 4 |2 | b | BTG |GOVERNMENT|01/2016|01/2016|200.00| 
| 5 |2 | b | BTG |GOVERNMENT|02/2016|02/2016|200.00| 
| 6 |3 | c | MAR | PRIVATE |12/2015|12/2015| 50.00| 
| 7 |3 | c | MAR | PRIVATE |01/2016|01/2016|100.00| 
| 8 |3 | c | MAR | PRIVATE |02/2016|02/2016|100.00| 

은 내가 view_ap2015below를 작성하고 2015 년에서 아래에 어디 emp_cat 개인과 그룹을 emp_loc 모든 송금의 총/합계를 선택해야합니다.

이 표를 가져와야합니다.

|emp_loc| emp_cat |amount| 
| PAL | PRIVATE | 50.00| 
| MAR | PRIVATE | 50.00| 

나는이 성명을 사용했으나 2016 년 송금액은 그대로 있습니다.

SELECT Emp_loc, Emp_Cat, FORMAT(SUM(Amount),2) As Amount 
FROM tbl_remit 
WHERE AP_from <= '01/01/2015' AND AP_To <= '01/01/2015' AND Emp_Cat = 'PRIVATE' 
GROUP BY Emp_Loc 

날짜의 AP_From 및 AP_To 형식이 월과 연도뿐이기 때문에 그렇습니까?

감사합니다.

+4

날짜를 저장하려면 '날짜'데이터 형식을 사용해야합니다. –

+1

'50.00'이 예상 결과 집합에 나타나는 논리는 무엇입니까? –

+0

나는 72000 명의 고용주 송금 기록을 가지고 있습니다. 우리는 모든 사립 회사가 2015 년의 해당 기간에 지불 한 금액을 알아야합니다. 그것은 단지 예일뿐입니다. 이 예제를 위해 더 많은 레코드를 추가해야합니까? – Clorae

답변

4

@Giorgos가 지적했듯이, 날짜 유형보다는 텍스트 유형을 사용하여 날짜를 저장하는 것처럼 보입니다. 아니요 이렇게하십시오. 그러나, 당신이 가지고 있기 때문에, 비교를 할 때 STR_TO_DATE을 사용하여 텍스트를 날짜로 변환 할 수 있습니다.

또 다른 문제점은 GROUP BY 쿼리에서 집계되지 않은 열을 선택했다는 것입니다.

SELECT Emp_loc, Emp_Cat, FORMAT(MIN(Amount),2) As Amount 
FROM tbl_remit 
WHERE STR_TO_DATE(AP_from, '%m/%Y') <= '2015-01-01' AND 
     STR_TO_DATE(AP_to, '%m/%Y') <= '2015-01-01' AND 
     Emp_Cat = 'PRIVATE' 
GROUP BY Emp_Loc, Emp_Cat 
+0

예였습니다. 미안하지만, 먼저 기록을 정리할거야. 하지만이 선생님 께 감사드립니다. – Clorae

+0

선생님, GROUP BY Emp_Loc, Emp_Cat 뒤에있는 이유는 무엇입니까? – Clorae

+1

'Emp_Cat'를 선택하려면'GROUP BY' 절에 나타나거나 집계 함수 안에 있어야합니다. 나는 그것이 가장 합리적인 것처럼 보였기 때문에 전자를 선택했다. –

0

ap_from 및 ap_to는 DATE 유형입니까? 다음을 시도하십시오

SELECT Emp_loc, Emp_Cat, FORMAT(SUM(Amount),2) As Amount 
FROM tbl_remit 
WHERE YEAR(AP_from) = 2015 AND YEAR(AP_To) = 2015 AND Emp_Cat = 'PRIVATE' 
GROUP BY Emp_Loc 
+1

은 ap_from 및 ap_to로 보입니다 ** ** 날짜 유형이 – Sami

+0

예 아니요. 내 기록을 정리하고 이것을 사용하겠습니다. – Clorae

관련 문제