我对SQL还很陌生,我知道这应该很简单,但我似乎找不到任何关于如何具体做我正在寻找的事情的参考资料。我查过档案,找不到一个基本的例子。
不管怎样,我只想-

SELECT
(COUNT (i.productNumber WHERE i.type = 'type1') AS 'Type 1'),
(COUNT (i.productNumber WHERE i.type = 'type2') AS 'Type 2'),
FROM items AS i
WHERE i.dateadded BETWEEN '2015-03-02' and '2015-03-04'

两个计数条件不同,但这两个查询都共享该日期条件。我做了两个不同的select语句,并将它们结合起来。那很有效。唯一的问题是所有数据都出现在语句第一个别名下的一列中。我需要每个别名都是一个新的列。我还要把日期条件写两次。

最佳答案

您可以按类型对它们进行分组,以便为它们中的每一个获得不同的行:

SELECT i.type, COUNT(i.productNumber)
FROM items i
WHERE i.dateadded BETWEEN '2015-03-02' AND '2015-03-04'
GROUP BY i.type;

如果你真的想坐一排,那么你可以
SELECT COUNT(b.productNumber) AS 'type1', COUNT(c.productNumber) AS 'type2'
FROM items i
LEFT JOIN items b on b.productNumber = i.productNumber
LEFT JOIN items c on c.productNumber = i.productNumber
WHERE i.dateadded BETWEEN '2015-03-02' AND '2015-03-04'
  AND b.type = 'type1'
  AND c.type = 'type2';

09-12 00:25