2011-04-23 98 views
-4

AP表查詢沒有給我的預期結果

id tid  code pid  cl   date 
1 1  1002 17  DC  2011-04-05 16:14:37  
2 1  1002 18  DC  2011-04-05 16:14:37  
3 1  1002 19  DC  2011-04-05 16:14:37  
4 2  1002 12  SC  2011-04-05 16:15:59  
5 2  1002 9  SC  2011-04-05 16:15:59  
6 2  1002 21  SC  2011-04-05 16:15:59  
7 3  1003 20  DC  2011-04-07 14:57:40  
8 3  1003 12  DC  2011-04-07 14:57:40  
9 3  1003 9  DC  2011-04-07 14:57:40  
10 3  1003 21  DC  2011-04-07 14:57:40  
11 4  1002 18  SC  2011-04-08 18:10:04  
12 4  1002 19  SC  2011-04-08 18:10:04  
13 4  1002 22  SC  2011-04-08 18:10:04  
14 5  1001 17  SC  2011-04-08 18:21:10  

在表

tid totalamount  code pstatus  cdate 
    1 65.98   1002  R  2011-04-05 16:14:37 
    2 17.74   1002  R  2011-04-05 16:15:59  
    3 96.36   1003  R  2011-04-07 14:57:40  
    4 25.94   1002  S  2011-04-08 18:10:04  
    5 9    1001  R  2011-05-08 18:21:10  

我想這樣的,但它不是正確

SELECT at.totalamount, at.pstatus, ap.cl 
FROM `at` AS at 
INNER JOIN ap AS ap ON at.`code` = ap.`code` 
WHERE ap.cl = 'SC' 
AND at.`code` = '1002' 
GROUP BY at.`code` 
LIMIT 0 , 30 

我預期的結果

pstatus->S pstatus->R 


code Stotalamount Rtotalamount Sstatus Rstatus cl 
1002 25.94   17.74   S   R  SC 

請任何身體告訴我正確的查詢

+4

這沒有意義,您給我們的示例查詢有3列,但您希望結果有5列。你的實際結果是什麼?你期望什麼? – Hogan 2011-04-23 11:56:16

+1

堆棧溢出不是一個網站,旨在'告訴'你的問題的代碼。請停止問這樣的類似問題。 – 2011-04-26 04:36:14

回答

0

看來你要添加的totalamount兩次,一次是在R狀態,另一個用於S狀態。

但我不明白你是如何加入ap表和爲什麼65.98未被添加。連接是否應該在日期列上完成?

這可能工作,但你必須用不同的數據測試它,以確保。或者更多地解釋兩個表中的列代表的內容以及您希望查詢顯示的內容。

SELECT at.code 
    , SUM(IF(at.pstatus='S', at.totalamount, 0)) 
     AS Stotalamount 
    , SUM(IF(at.pstatus='R', at.totalamount, 0)) 
     AS Rtotalamount 
FROM at 
WHERE EXISTS 
    (SELECT 1 
    FROM ap 
    WHERE at.code = ap.code 
     AND at.cdate = ap.date 
     AND ap.cl = 'SC' 
) 
    AND at.code = 1002 
GROUP BY at.code 
LIMIT 0 , 30 
+0

非常感謝你 – user36 2011-04-25 09:33:15

+0

我需要包括DC-Stotalamount DC-Ctotalamount和(DC-Stotalamount + DC-Ctotalamount)作爲DC-Total請發送查詢此輸出 – user36 2011-04-25 11:22:21

+0

@ user36 - 我認爲[Rent a Coder](http ://www.rent-acoder.com/)是一個更適合您需求的網站。堆棧溢出不是代碼在需求時被嘔吐的地方。你必須提供一些證據表明你實際上已經付出了一些努力。 – 2012-01-23 07:19:02