2

私はMSSQLが初めてで、次のことを行うエレガントな方法を見つけています。

Orderというテーブルがあり、詳細は次のとおりです。

orderID       orderTime                   quantity         total
***************************************************************** 
1             4/1/2013 06:00:00 AM        3                300  
2             4/1/2013 09:00:00 AM        1                100  
3             4/2/2013 07:33:00 PM        2                265  
4             4/3/2013 04:15:00 PM        1                65
*****************************************************************

次の出力を出すことは可能ですか?

orderDate     total
*******************
4/1/2013      400   
4/3/2013      65    

orderTime を文字列に変換してさらにグループ化しようとしましたが、どういうわけか失敗しました。私はまだそれを達成する方法を見つけるために一生懸命働いています.

SQL Server 2008 を使用しています。

4

3 に答える 3

2

確かに - orderTime を日付データ型に変換し、それによってグループ化できます。出力は、MIn/MAX ではなく SUM が必要であることを示しているようですが、適切な集計で調整できます。

select 
  convert(date, orderTime) as 'orderDate', 
  sum(total) as 'total', 
  min(total) as 'Min', 
  max(total) as 'Max'
from Order
group by convert(date, orderTime)
order by convert(date, orderTime)
于 2013-05-01T16:52:51.090 に答える
1

orderTime を Date データ型に変換できます。

SELECT orderDate = CONVERT(Date, orderTime)
    , total = SUM(total)
FROM dbo.Order (NOLOCK)
GROUP BY CONVERT(Date, orderTime)
ORDER BY orderDate;

これにより、次の出力が返されます。

orderDate     total
*******************
4/1/2013      400   
4/2/2013      265
4/3/2013      65 
于 2013-05-01T16:52:04.400 に答える
0

orderTime のデータ型に依存します。これを日付フィールドに変換できます (時間なし):

 SELECT CAST(orderTime AS DATE), SUM(total) 
 FROM Table 
 GROUP by CAST(orderTime AS DATE);

--dmg

于 2013-05-01T16:56:00.173 に答える