2011-03-16 73 views
3

我希望有人能让我看到光。转换和枢轴像在MySQL问题

我试着很长时间才得到结果o一周内,一天和一年的销售额在一个查询中没有机会。

我发现了一个可以帮助我但不在mysql中工作的语法。

TRANSFORM 
    Sum(Cantidad) AS Ventas 
SELECT 
    Producto, Cantidad 
FROM 
    Pedidos 
WHERE 
    Fecha Between #01-01-1998# And #12-31-1998# 
GROUP BY 
    Producto 
ORDER BY 
    Producto 
PIVOT 
    DatePart("m", Fecha) 

我真正的查询,这是一个:

select sum(orders.final_price) AS total 
    , orders.id_comercial 
    , vendedores.nombre 
from orders 
    , vendedores 
WHERE orders.id_comercial = vendedores.id 
    AND DATE(orders.date_purchased) = DATE(NOW()) 
GROUP BY orders.id_comercial 

我真的会感激的一些想法,这也许下旬在这里在西班牙德夜;)

我查询的结果是这一个:

total   id_comercial   nombre 
740.83  24  AITOR ANGULO 
2069.37  29  FERNANDO I 
482.05  32  JOSE ANDRES 
961.32  33  ALBERTO FERNANDEZ -CANTABRIA- 
908.66  34  GONZALO 
49.54   38  LUIS LOPEZ 
4082.42  39  JULEN DEL CURA 
1512.87  43  ALBERTO POBLACION 
1268.91  44  MASSIMO 
3269.08  45  JOSE RAMON BURGA 
56.49   47  EMPRESA 
2791.65  48  MARCO MORILLO 
1445.57  61  TINO 
869.73  63  SONIA 
1052.02  381  DAVID ARIAS 

真的thnx所有。

+0

显示预期的结果行。您如何期望在一个查询中显示“周,年,日”?仅供参考,MS Access转换运算符将生成12列,每**个月**一列。 – RichardTheKiwi 2011-03-16 22:52:18

+0

@user - 什么是所需的输出,而不是你目前有什么 – RichardTheKiwi 2011-03-16 23:27:59

回答

1

例如,这会给你的那一天,7日和年至今总计

select sum(case when DATE(orders.date_purchased) = DATE(NOW()) then orders.final_price end) AS TotalToday 
    , sum(case when DATE(orders.date_purchased) >= DATE(NOW() -7) then orders.final_price end) AS TotalLast7Days 
    , sum(case when YEAR(orders.date_purchased) = YEAR(NOW()) then orders.final_price end) AS TotalYearToDate 
    , orders.id_comercial 
    , vendedores.nombre 
from orders 
    , vendedores 
WHERE orders.id_comercial = vendedores.id 
    AND orders.date_purchased >= date(concat(year(now()),'-01-01')) 
GROUP BY orders.id_comercial, vendedores.nombre 

FYI date(concat(year(now()),'-01-01'))给你当年

但是如果你想的第一天枢轴表,然后

select sum(case when MONTH(orders.date_purchased) = 1 then orders.final_price end) AS Jan 
    , sum(case when MONTH(orders.date_purchased) = 2 then orders.final_price end) AS Feb 
     .... 
    , sum(case when MONTH(orders.date_purchased) = 12 then orders.final_price end) AS Dec 
    , orders.id_comercial 
    , vendedores.nombre 
from orders 
    , vendedores 
WHERE orders.id_comercial = vendedores.id 
    AND orders.date_purchased >= date(concat(year(now()),'-01-01')) 
GROUP BY orders.id_comercial, vendedores.nombre 

没有MySQL的(或与此有关的任何其它体面RDBMS)的访问操作者变换,它可以自动产生一个动态的n当量数据列的数目。

+0

thnx理查德。我试图得到理想的结果。我现在告诉你。 – SauronZ 2011-03-16 23:15:52

+0

它很棒! Thnxxxxxxxxxx – SauronZ 2011-03-16 23:42:35

+0

我知道这是一个旧帖子,但在寻找相同的解决方案时,如果它解决了问题,将解决方案/解决方案发布到问题将会很有帮助。 – BarclayVision 2016-06-19 10:48:38