MySQL。查询出两个特定日期间隔之间的销售额
我正在尝试写一个查询,其中包含类别编号、类别名称以及特定日期间隔之间该类别编号的总销售额MySQL。查询出两个特定日期间隔之间的销售额,mysql,mysql-workbench,Mysql,Mysql Workbench,我正在尝试写一个查询,其中包含类别编号、类别名称以及特定日期间隔之间该类别编号的总销售额 SELECT k.CatNr, k.name, lin.Price * lin.Number Totale_Sale FROM kategori k, vare v, ordrelinje lin, ordre ord WHERE k.CatNr = v.CatNr AND v.VNr = lin.VNr AND lin.OrderNr = ord.OrderNr AND ord.Date BETWEEN
SELECT k.CatNr, k.name, lin.Price * lin.Number Totale_Sale
FROM kategori k, vare v, ordrelinje lin, ordre ord
WHERE k.CatNr = v.CatNr
AND v.VNr = lin.VNr
AND lin.OrderNr = ord.OrderNr
AND ord.Date BETWEEN 2011-01-14 AND 2011-01-15
GROUP BY k.Catnr;
问题是,这不会返回任何预期值。我特别不确定之间的部分,需要一些关于这方面的建议,使其工作。谢谢 在“2011-01-14”和“2011-01-15”之间使用引号
,
林的价格*林的编号AS总销售额
有几件事:
- 日期文字需要单引号:
。另一方面,引擎认为你有数字和减法“2011-01-14”和“2011-01-15”
被评估为编号2011-01-14
1996
- 当比较
值时,“2011-01-14”和“2011-01-15”之间的Date
ord.Date起作用,但如果您有
或DATETIME
列/表达式,则不会按预期起作用。使用TIMESTAMP
更安全,=
是
aord.Date
、aDate
或DATETIME
列?非常感谢您的建议!TIMESTAMP
SELECT k.CatNr, k.name, lin.Price * lin.Number AS Totale_Sale FROM kategori k, vare v, ordrelinje lin, ordre ord WHERE k.CatNr = v.CatNr AND v.VNr = lin.VNr AND lin.OrderNr = ord.OrderNr AND ord.Date BETWEEN '2011-01-14' AND '2011-01-15' GROUP BY k.Catnr;
ord.Date >= '2011-01-14' AND ord.Date < '2011-01-15' + INTERVAL 1 DAY
SELECT k.CatNr, k.name, SUM(lin.Price * lin.Number) AS Totale_Sale FROM kategori k JOIN vare AS v ON k.CatNr = v.CatNr JOIN ordrelinje AS lin ON v.VNr = lin.VNr JOIN ordre AS ord ON lin.OrderNr = ord.OrderNr WHERE ord.Date >= '2011-01-14' AND ord.Date < '2011-01-15' + INTERVAL 1 DAY GROUP BY k.Catnr, k.name ;