簡體   English   中英

MySQL將單列數據分為兩列

[英]MySQL split a single column data into two columns

可能您發現我的問題重復了,但是我沒有從任何一個人那里得到答案,或者我無法創建查詢。

我有一張下面的桌子。

---------------------------------------------------------------------------------
|    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

它顯示了單列( SUM(Qty) )中的記錄,跳過了免費數量(Rate = 0),因為我已經編寫了查詢來做到這一點。

查詢應該是什么?

請幫我解決這個問題。

問候

經過測試和工作:

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM