2014-01-27 36 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'))