2010-02-10 52 views
1

我有一个从多个表中获取数据的存储过程。存储过程从PHP脚本中调用,并将生成的数据放入网格中。MySQL - 分组dayname()为唯一列

我遇到的问题是我不知道如何让dayname独一无二,以至于最多有七个列,一个星期中的每一天,而不是像'周二'和 'T​​uesday1'

这里是一个片段

select concat(
       'select tbl_kiosks.name "DCI ERP",tbl_retailers.abbr "Retailer", 
    tbl_retaillocations.storeNumber "Store", 
    tbl_retaillocations.city "City", 
    tbl_retaillocations.state "State"' 
      , group_concat(
        concat(',sum(if(ks.StartDate="',ks3.StartDate,'", numOfSessions, null)) "', dayname(DATE_FORMAT(ks3.StartDate,'%Y-%m-%d')) ,'" ' 
        ) 
        separator ' ' 
       ) 

回答

0

在某处,group_concat,你必须select distinct dayname(...)而不是select dayname(...)。那会让你每天只有一列。

或者你可以考虑group by

select 
    tbl_kiosks.name "DCI ERP" 
, tbl_retailers.abbr "Retailer" 
, tbl_retaillocations.storeNumber "Store" 
, tbl_retaillocations.city "City" 
, tbl_retaillocations.state "State" 
, dayname(ks3.StartDate) "Weekday" 
, sum(case when dayname(ks3.StartDate) = 'Monday' 
     then numOfSessions else 0 end) as Monday 
, sum(case when dayname(ks3.StartDate) = 'Tuesday' 
     then numOfSessions else 0 end) as Tuesday 
, .... 
from <your join list here> 
group by "DCI ERP", Retailer, Store, City, State, dayname(ks3.StartDate) 
+0

我真的试图这样做,但出于某种原因选择DAYNAME截然不同产生相同的结果。我仍然在尝试,所以如果我把它整理出来,我会回复更多的信息。 – AmateurHour 2010-02-10 20:38:52