我是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语句,并在它们之间加了一个UNION。这样可行。唯一的问题是所有数据都出现在语句中第一个别名下的一列中。我需要每个别名都是一个新列。我还必须两次写日期条件。
答案 0 :(得分:1)
您可以按类型对它们进行分组,这样您就可以获得不同的行:
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';