2012-12-06 120 views
0

我已經構建了這個查詢來給我列出每個COD_ZONA在當月所做的IMPORTE數量。日期由FECHA_EMIS指示,COD_CLIENT是兩個表之間的鏈接。MySQL查詢選擇月份錯誤

SELECT GVA12.FECHA_EMIS, GVA12.IMPORTE, GVA14.COD_ZONA 
FROM GVA12 INNER JOIN GVA14 ON GVA12.COD_CLIENT = GVA14.COD_CLIENT 
GROUP BY GVA12.FECHA_EMIS, GVA12.IMPORTE, GVA14.COD_ZONA 
HAVING (((GVA12.FECHA_EMIS)=Month(curDate()))); 

它給出一個空表。


@bluefeet這是我想最後的表

COD_ZONA   IMPORTE 
1     1457.56 
16     127.45 
+0

您創建與同一個問題一個新的職位:http://stackoverflow.com/questions/13740851/mysql-query-month-selection-錯誤/ 13740925#13740925 –

+0

是的,但我還沒有制定出如何解決它呢! –

回答

1

這聽起來像你需要使用這個,應用Month()功能,無論是GVA12.FECHA_EMIScurDate()

SELECT GVA12.FECHA_EMIS, GVA12.IMPORTE, GVA14.COD_ZONA 
FROM GVA12 INNER JOIN GVA14 
    ON GVA12.COD_CLIENT = GVA14.COD_CLIENT 
WHERE Month(GVA12.FECHA_EMIS)=Month(curDate()) 
GROUP BY GVA12.FECHA_EMIS, GVA12.IMPORTE, GVA14.COD_ZONA 

如果你想同時月份和年份來比較的話,我會用:

SELECT GVA12.FECHA_EMIS, GVA12.IMPORTE, GVA14.COD_ZONA 
FROM GVA12 INNER JOIN GVA14 
    ON GVA12.COD_CLIENT = GVA14.COD_CLIENT 
WHERE Month(GVA12.FECHA_EMIS)=Month(curDate()) 
    AND Year(GVA12.FECHA_EMIS)=Year(curDate()) 
GROUP BY GVA12.FECHA_EMIS, GVA12.IMPORTE, GVA14.COD_ZONA 

這將確保月份和年份相等。

如果你想有一個sum()那麼你可以使用:

SELECT GVA14.COD_ZONA, sum(GVA12.IMPORTE) 
FROM GVA12 INNER JOIN GVA14 
    ON GVA12.COD_CLIENT = GVA14.COD_CLIENT 
WHERE Month(GVA12.FECHA_EMIS)=Month(curDate()) 
    AND Year(GVA12.FECHA_EMIS)=Year(curDate()) 
GROUP BY GVA14.COD_ZONA 
+0

因此,如果我在使用年份的第一個月後添加另一行,它會選擇當前年份? –

+0

如果您使用的WHERE條款同時檢查月份和年份,則例如,如果您今天檢查,則只會從2012年12月份獲得記錄 – Taryn

+0

太棒了!是否有任何方法來總結每個COD_ZONA的IMPORTE?其中有39個。所以最終結果是每個COD_ZONA的總和。謝謝 –

0

GVA12.FECHA_EMIS存儲一個月或完整的日期?您正在與當前月份進行比較。

HAVING (((GVA12.FECHA_EMIS)=Month(curDate()))); 
+0

隨着時間的流逝。 –

+0

然後當你比較完整的日期和月 – dkkumargoyal

+0

時它將如何返回結果真的......那麼我該如何改變這一點? –