2014-11-02 64 views
0

我在MySQL中有一个查询问题。我能够创造这些结果。来自两个结果的Mysql内连接

SELECT X.data, 
     SUM(X.costo_totale) AS 'COSTO TOTALE', 
     X.reparto 
FROM (SELECT DISTINCT(DATE(start_date)) 
          AS 
          'DATA', 
         TRUNCATE(IFNULL(SUM(TIMESTAMPDIFF(minute, start_date, 
              end_date)) 
           , 0)/60, 2) AS 
         'ORE', 
         costo_orario, 
         TRUNCATE((IFNULL(SUM(TIMESTAMPDIFF(minute, start_date, 
              end_date 
              )), 0)/60) * 
           costo_orario, 2) 
          AS 'costo_totale', 
         event_name, 
         reparto 
     FROM `agoragroup_cgo_events` a 
       INNER JOIN `agoragroup_cgo_dipendenti` b 
         ON a.section_id = b.id_utente 
     WHERE reparto = 'CASSA' 
     GROUP BY section_id, 
       data, 
       reparto) X 
GROUP BY X.data, 
      X.reparto 
DATA COSTO TOTALE REPARTO 
2014-10-27 645.85 CASSA 
2014-10-28 677.99 CASSA 
2014-10-29 496.42 CASSA 
2014-10-30 586.43 CASSA 
2014-10-31 744.76 CASSA 
2014-11-01 874.75 CASSA 
2014-11-02 702.15 CASSA 

而这个查询

SELECT data,familia, 
     valore, 
     TRUNCATE((valore * conseguito)/100, 2) AS 'Conseguito', 
     TRUNCATE((valore * budget)/100, 2)  AS 'Budget' 
FROM `agoragroup_dati_incidenza` f 
     INNER JOIN `agoragroup_chronoforms_data_margine_lordo_reparto` g 
       ON f.familia = g.reparto 
WHERE familia = 'CASSA' 
     AND f.smk = 'LE OFFICINE' 
 data familia valore  Conseguito Budget 
2014-10-27 CASSA 21060.99 4052.13 3999.48 
2014-10-28 CASSA 23333.93 4489.44 4431.11 
2014-10-29 CASSA 24103.83 4637.57 4577.31 
2014-10-30 CASSA 26683.23 5133.85 5067.14 
2014-10-31 CASSA 33008.14 6350.76 6268.24 
2014-11-01 CASSA 54064.79 10402.06 10266.90 

我想通过,日期字段跨越数据

data familia valore  Conseguito Budget COSTO TOTALE 
2014-10-27 CASSA 21060.99 4052.13 3999.48 645.8 
2014-10-28 CASSA 23333.93 4489.44 4431.11 677.99 
2014-10-29 CASSA 24103.83 4637.57 4577.31 496.42 
2014-10-30 CASSA 26683.23 5133.85 5067.14 586.43 
2014-10-31 CASSA 33008.14 6350.76 6268.24 586.43 

我尝试了很多方法,但找不到解决方案

回答

0

我觉得这很简单,如果你只是将它们结合在一起。你的情况可能是'数据'和'家庭/再生'是平等的。

试试这个:

SELECT w.data, t.familia, t.valore, t.conseguito, t.budget, w.costo_totale 
FROM(SELECT X.data, SUM(X.costo_totale) AS 'COSTO TOTALE', X.reparto 
    FROM (SELECT DISTINCT(DATE(start_date)) AS 'DATA', 
         TRUNCATE(IFNULL(SUM(TIMESTAMPDIFF(minute, start_date, end_date)) , 0)/60, 2) AS 'ORE', 
         costo_orario, 
         TRUNCATE((IFNULL(SUM(TIMESTAMPDIFF(minute, start_date, end_date)), 0)/60) * costo_orario, 2) AS 'costo_totale', 
         event_name, reparto 
      FROM `agoragroup_cgo_events` a 
      INNER JOIN `agoragroup_cgo_dipendenti` b ON a.section_id = b.id_utente 
      WHERE reparto = 'CASSA' 
      GROUP BY section_id, data, reparto) X 
    GROUP BY X.data, X.reparto) w 
JOIN(SELECT data,familia, valore, 
      TRUNCATE((valore * conseguito)/100, 2) AS 'Conseguito', 
      TRUNCATE((valore * budget)/100, 2)  AS 'Budget' 
    FROM `agoragroup_dati_incidenza` f 
    INNER JOIN `agoragroup_chronoforms_data_margine_lordo_reparto` g 
      ON f.familia = g.reparto 
    WHERE familia = 'CASSA' 
    AND f.smk = 'LE OFFICINE') t 
ON t.data = w.data AND t.familia = w.reparto; 
+0

查询结果得到一个错误#1054 - 未知列“w.costo_totale”在“字段列表” – 2014-11-06 13:57:35

+0

那是因为我在在线'做了一个错字FROM(SELECT X.data ,SUM(X.costo_totale)AS'COSTO TOTALE',X.reparto'。要么将其改为'w.costo totale'或者将上面的行改为'as costo_totale' – AdamMc331 2014-11-06 14:32:22

+0

@Jonnychuck我认为那工作了吗? – AdamMc331 2014-11-06 14:34:26