2014-11-11 3 views
1

내 질문을 중복으로 찾을 수는 있지만 그 중 하나에서 내 대답을 얻지 못했거나 쿼리를 만들 수 없었습니다.MySQL은 하나의 열 데이터를 두 개의 열로 나눕니다.

다음과 같은 표가 있습니다.

--------------------------------------------------------------------------------- 
| Customer Name | Date | Product Name | Qty | Rate | Amount | 
--------------------------------------------------------------------------------- 
| Customer1   | 10/10/2014 | Product1  | 10 | 100.00 | 1000.00 | 
| Customer1   | 12/10/2014 | Product1  | 1 | 0.00 | 0.00 | 
| Customer2   | 14/10/2014 | Product1  | 10 | 100.00 | 1000.00 | 
| Customer1   | 16/10/2014 | Product1  | 10 | 100.00 | 1000.00 | 
| Customer2   | 16/10/2014 | Product2  | 10 | 100.00 | 1000.00 | 
| Customer2   | 16/10/2014 | Product2  | 1 | 0.00 | 0.00 | 
| Customer1   | 20/10/2014 | Product2  | 20 | 150.00 | 1500.00 | 
--------------------------------------------------------------------------------- 

제가

--------------------------------------------------------- 
| Customer Name | Product Name | Qty | Free | 
--------------------------------------------------------- 
| Customer1   | Product1  | 20 |  1 | 
| Customer1   | Product2  | 20 |  0 | 
| Customer2   | Product1  | 10 |  0 | 
| Customer2   | Product2  | 10 |  1 | 
--------------------------------------------------------- 

그것은 분할에게 기간에 Rate/Amount에 기초 둘로 Qty 칼럼 살균제 아래와 같은 결과를 보여주고 싶다.

제 프로그램에서는 무료 수량을 0.00 속도로 저장합니다.

많은 프로세스를보고 시도했지만 실패했습니다.

SQL 쿼리는 아래와 같습니다.

SELECT CustomerName,ProductName,SUM(Qty), CASE WHEN Rate > 0 AND Amount > 0, CASE WHEN Rate < 1 AND Amount < 1 FROM salesdetails WHERE InvoiceDate BETWEEN '02/11/2014' AND '13/11/2014' GROUP BY ProductId, SoldTo ORDER BY CustomerName ASC

그러나 오류를 보이고있다. 내가 시도

... 나는이 작업을 수행하는 쿼리를 작성했기 때문에

SELECT CustomerName,ProductName,SUM(Qty) FROM salesdetails WHERE InvoiceDate BETWEEN '" & dtt & "' AND '" & dtf & "' AND Rate > 0 AND Amount > 0 GROUP BY ProductId, CustomerName ORDER BY CustomerName ASC

그것은 자유 양 (비율 = 0) 생략 하나의 열 (SUM(Qty))의 기록을 보이고있다.

검색어는 무엇이되어야합니까?

이 문제를 해결하는 데 도움을주십시오.

감사

+0

을들 :'를 invoiceDate/2014 '와 '13/11/2014'' Shouldn't 11/02 BETWEEN하면이 수'를 invoiceDate BETWEEN을 '02/10/2014 '및 '13/11/2014'? 그렇지 않으면 레코드가 표시되지 않습니다. –

답변

2

는 테스트 및 작동 :

SELECT Customer, 
     Product, 
     SUM(IF(Rate>0,Qty,0)) AS Qty, 
     SUM(IF(Rate=0,Qty,0)) AS Free 
FROM salesdetails 
WHERE InvoiceDate BETWEEN '02/10/2014' AND '13/11/2014' 
GROUP BY Customer, Product; 
+0

답변 해 주셔서 감사합니다. 나는 테스트했고 실제 결과를 제공합니다. 다시 한번 감사드립니다. – Raj

관련 문제