2014-01-27 38 views
0

我的目標是創建具有id, revenue(計算)和year三列的視圖。我能夠得到idrevenue。但是,我的日期列採用varchar格式。創建視圖中的SQL語句

我不知道如何做到這一點。下面是我的SQL語句:

SELECT DISTINCT 
    id, 
    SUM(fborders.quantity * fbmenu.fbMenuUnitPrice) as revenue 
FROM 
    fb.fborders 
     INNER JOIN 
    fb.fbmenu ON fborders.fbMenuId = fbmenu.fbMenuId 
WHERE 
    date = (SELECT 
      YEAR(STR_TO_DATE(date, '%d/%m/%Y')) 
     from 
      fb.fborders 
     WHERE 
      YEAR(STR_TO_DATE(date, '%d/%m/%Y')) = '2011' 
       OR YEAR(STR_TO_DATE(date, '%d/%m/%Y')) = '2012' 
       OR YEAR(STR_TO_DATE(date, '%d/%m/%Y')) = '2013') 
GROUP BY id 

我的輸出:

 
id | revenue | year 
_______________________ 
R1 | 100  | 2011 
R1 | 999  | 2012 
R1 | 832  | 2013 
R2 | 323  | 2011 
R2 | 318  | 2012 
R2 | 111  | 2013 
R3 | 432  | 2011 
R3 | 342  | 2012 
R3 | 873  | 2013 

回答

0

如果我理解正確的,你真正想要做的是組由上年度:

SELECT DISTINCT 
    id, 
    SUM(fborders.quantity * fbmenu.fbMenuUnitPrice) as revenue, 
    YEAR(STR_TO_DATE(date, '%d/%m/%Y')) as year 
FROM 
    fb.fborders 
     INNER JOIN 
    fb.fbmenu ON fborders.fbMenuId = fbmenu.fbMenuId 
GROUP BY 
    id, 
    YEAR(STR_TO_DATE(date, '%d/%m/%Y'))