mysql - 像 mysql 问题中那样转换和转换

标签 mysql pivot transform

我希望有人能给我指路。

很长一段时间以来,我一直在尝试在一个查询中按周、天和年获得一些销售结果,但没有机会。

我找到了一种可以帮助我但在 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

真的很感谢大家。

最佳答案

例如,这将为您提供当天、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

仅供引用 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

没有与 Access 运算符 TRANSFORM 等效的 MySQL(或任何其他像样的 RDBMS),后者自动从数据中生成动态数量的列。

关于mysql - 像 mysql 问题中那样转换和转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5332554/

相关文章:

SQL 查询将分组结果作为单行返回

css - 在父悬停时旋转跨度元素边框

mysql - 无法删除 UPDATE 查询中的 SQL 语法

mysql - 如何在 CodeIgniter 中显示数据库中的图像?

windows-phone-7 - 防止 Windows Phone 中的枢轴导航

python - Pandas:从数据透视表中的一列中减去另一列

layout - D3力布局稳定检测

ios - iOS Safari 上的 CSS 缩放转换缩小页面

PHP-MYSQL 每次点击特定行时,它都会向 PHP 变量添加 +1

mysql - 查询所有活跃贷款的每日未偿还金额