MySQL多维查询麻烦

时间:2014-08-07 19:56:41

标签: mysql

我有表venta,这个表有这样的结构:

id  can tot fec         hor            cod_f     per_f tdt des com   cdv    cliente     fdc     local
1   1   39  07/08/2014  11:36:28 a.m.   2112    GUSTAVO V   0       00003   Gustavo 07/08/2014  xtorr
2   1   59  07/08/2014  11:37:31 a.m.   2222    GUSTAVO V   0       00005           07/08/2014  xtorr
3   2   398 07/08/2014  11:37:35 a.m.   2233    GUSTAVO V   0       00005           07/08/2014  xtorr
4   2   358 07/08/2014  11:38:30 a.m.   3333    GUSTAVO V   0       00007           07/08/2014  xtorr
5   1   259 07/08/2014  11:38:34 a.m.   3113    GUSTAVO V   0       00007           07/08/2014  xtorr

cod_f是库存中商品的代码,可以是该商品的销售件数,tdt是交易的类型。我有5种类型的交易:E,S,V,D和T.

我想做一个多维查询,我有下一个结果。该列应计算当天为该代码进行的E,S,V,D和T类交易的数量。

cod   E S V D T
2112  0 0 1 0 0
2222  0 0 1 0 0
2233  0 0 2 0 0
3113  0 0 1 0 0
3333  0 0 2 0 0

此查询必须针对特定日期和特定商店; fdc是截止日期,本地是它的销售地点。然后我想它必须有

where fdc = '07/08/2014' and local = 'xtorr'

提前谢谢。

2 个答案:

答案 0 :(得分:2)

您可以使用SUM和IF的组合:

SELECT 
    cod_f,
    SUM(IF(tdt = 'E', can, 0)) AS E,
    SUM(IF(tdt = 'S', can, 0)) AS S,
    SUM(IF(tdt = 'V', can, 0)) AS V,
    SUM(IF(tdt = 'D', can, 0)) AS D,
    SUM(IF(tdt = 'T', can, 0)) AS T
FROM venta
WHERE
    fdc = '07/08/2014' and local = 'xtorr'
GROUP BY cod_f;

答案 1 :(得分:0)

SELECT cod, count(tdt), tdt
  FROM venta
 WHERE fdc = '07/08/2014'
  AND local = 'xtorr'
GROUP BY tdt, cod
ORDER BY cod, tdt;

然后,这将为您提供每个本地以及特定日期当地的每个鳕鱼和tdt的计数。我的解决方案有一个tdt列来区分该鳕鱼的计数对应于哪个tdt。