2012-01-03 94 views
0

我需要从SQL Server 2008 R2数据库中提取报告数据,该数据库列出了给定日期内所有产品。记录可以在同一天有多个条目,但我只想要对这些条目进行一次计数。如何在DATETIME不同时选择包括DATETIME的DISTINCT记录?

实例记录:

SerialNumber VARCHAR(20) 
OrderNumber VARCHAR(50) 
Price DECIMAL(7,2) 
TestDateTime DATETIME 

我的看法查询可能是这个样子:

SELECT DISTINCT OrderNumber, SerialNumber, Price, TestDateTime 
FROM TestTable 
ORDER BY OrderNumber, SerialNumber 

...然后报告查询会是这个样子:

SELECT OrderNumber, SerialNumber, Price 
FROM TestView 
WHERE CONVERT(date, getdate()) = CONVERT(date, TestDateTime) 

...除了我得到一个单独的(重复)每个日期时间的记录。我需要日期时间字段,因为我将根据日期从视图中选择记录,但我也希望给定OrderNumber的价格字段的精确总数,所以我只想查看每个SerialNumber一次。

任何想法?

下一个问题 - 如何获得具有相同OrderNumber的所有行的总价格?也许这应该是一个独立的问题...

+1

您需要的日期 - 哪个日期?最老的,最新的? – fge 2012-01-03 21:43:49

+0

看起来你可能有'JOIN',你有'TestTable'。您只是简单化查询以帮助我们理解它。如果是这种情况,请发布完整查询。 – 2012-01-03 21:55:14

+0

不是一个非常完整的问题。你说建立一个给定的一天,但现在在你的查询中的日期=。你的意思是每天有多个条目,并且你想要每天为每个产品排行?即便如此,价格如何变化呢?来吧,如果你需要帮助,但在这个问题上的一些努力。 – Paparazzi 2012-01-03 22:32:40

回答

2

你有没有考虑只是将其铸造日期

SELECT DISTINCT OrderNumber, SerialNumber, Price, cast(TestDateTime as date) testDate 
FROM TestTable 
ORDER BY OrderNumber, SerialNumber 
+0

就是这样!通过不包括日期时间的部分,DISTINCT子句现在可以正常工作......谢谢! – DaveN59 2012-01-04 15:17:51