查询以获取过去30天不同列的记录

时间:2019-05-03 01:13:14

标签: sql sql-server

假设您有一个包含以下条目的sql server数据库

CarMaker    CarModel    CarSalesPrice       CarSalesDate
---------------------------------------------------------
Maker A     A Model X V6    20000           12-23-2018
Maker B     B Model Z V6    30000           02-09-2019
Maker C     B Model Z V6    40000           04-08-2019

我正在尝试编写查询以生成过去30天每个汽车制造商和模型的总销售价格,但我遇到了麻烦

SELECT
     CarModel, CarMaker, Count(totalSalesPrice)
FROM
     dbo.Cars

WHERE
    carSalesDate >= DATEADD(day,-30, getdate()) 

此代码不起作用,这是我想到完成任务的唯一方法

2 个答案:

答案 0 :(得分:1)

您还需要使用GROUP BY按汽车型号和制造商进行汇总:

SELECT
    CarModel,
    CarMaker,
    SUM(totalSalesPrice) AS totalSales
FROM dbo.Cars
WHERE
    carSalesDate >= DATEADD(day, -30, GETDATE())
GROUP BY
    CarModel,
    CarMaker;

答案 1 :(得分:0)

您需要一个汇总和sum()。我还建议您修复日期比较:

SELECT CarModel, CarMaker, SUM(totalSalesPrice)
FROM dbo.Cars
WHERE carSalesDate >= DATEADD(day,- 30, CONVERT(DATE, getdate()));

GETDATE()具有时间成分,这具有误导性。我不确定您是否要-30天或-29天。