我正在尝试根据我的项目要求对SQL Server数据库数据进行排序。我尝试了很多SQL查询来过滤数据但没有一个正常工作。请帮我完成工作。
我有一个包含5列的数据库表:ProductName
,StartDate
,EndDate
,UsageQuantity
和Cost
。 startdate
和enddate
也是带时间的日期,如果减去则会给出一小时的差异。
同样,startdate和enddate的多个副本可用于一个月的数据。我需要的是找出每天特定产品的总使用量和成本,并且还要查找产品使用的小时数。
有人可以建议我使用sql查询或查找结果的代码片段吗?
数据库中的日期如下所示
ProductName StartDate EndDate UsageQuantity Cost
xyz 01-04-2015 00:00 01-04-2015 01:00 0.6258 .007
sf 01-04-2015 00:00 01-04-2015 01:00
de 01-04-2015 01:00 01-04-2015 02:00
df 01-04-2015 01:00 01-04-2015 02:00
01-04-2015 02:00 01-04-2015 03:00
01-04-2015 02:00 01-04-2015 03:00
01-04-2015 03:00 01-04-2015 04:00
01-04-2015 03:00 01-04-2015 04:00
01-04-2015 04:00 01-04-2015 05:00
01-04-2015 04:00 01-04-2015 05:00
01-04-2015 05:00 01-04-2015 06:00
01-04-2015 05:00 01-04-2015 06:00
01-04-2015 06:00 01-04-2015 07:00
01-04-2015 06:00 01-04-2015 07:00
只需帮我分开日期和时间,并计算每天的小时数。
提前致谢
答案 0 :(得分:0)
以此为出发点
SELECT SUM(TIMESTAMPDIFF(SECOND,StartDate, EndDate)), SUM(UsageQuantity), SUM(Cost)
FROM tablename
GROUP BY ProductName, Date(StartDate);
答案 1 :(得分:0)
CREATE PROCEDURE GetDaysUsageForProduct
(
@ProductName varchar(100),
@DateUsed datetime
)
AS
BEGIN
SELECT @DateUsed DateUsed,
ProductName,
SUM(UsageQuantity) TotalQuantityUsed,
SUM(DATEDIFF(hh, StartDate, EndDate) HoursUsed
SUM(Cost) TotalCost
FROM myTable
WHERE CONVERT(varchar(10), StartDate, 112) = CONVERT(varchar(10), @Date, 112)
AND ProductName = @ProductName
GROUP BY ProductName
END
GO