sql >> データベース >  >> RDS >> Sqlserver

注文日と製品別 SQL Server 2008

    サンプルデータと望ましい結果が役立ちます。 「個別」と言うときは、グループ化を意味すると思います。 WHERE 句では、 @from および @to パラメータの時間コンポーネントが正しく設定されていることを確認する場合 (毎日全体を含めるために)、Order.OrderDate をキャストする必要はありません。比較の左側にキャスト操作を適用することは決して良い考えではありません。

    SELECT  --cast(Orders.OrderDate as date),
            Products.ProductId 
            SUM(OrderDetails.OrderDetailQuantity) AS totalOrdered,
    FROM Orders 
    INNER JOIN OrderDetails ON Orders.OrderId = OrderDetails.OrderId 
    INNER JOIN Products ON OrderDetails.ProductId = Products.ProductId 
    where Orders.OrderDate between cast(@from as date) AND cast(@to as date)
    GROUP 
    BY      --cast(Orders.OrderDate as date),
            Products.ProductId 
    
    
    -- to illustrate:
    declare @From datetime = '1/1/2000 10:30:22',
            @To datetime = '1/3/2000 9:11:31'
    
    declare @orders table (i int, dt datetime)
    insert into @orders
        values(1, '1/1/2000 8:00'),(2, '1/2/2000 10:00'), (3, '1/4/2000 3:00')
    
    
    -- only returns i=2
    select *
    from    @orders
    where dt between @From and @To
    
    -- returns i=1 & i=2
    select *
    from    @orders
    where dt between cast(@From as date) and cast(@To as date)
      


    1. 既存のテーブルにシーケンスを作成する

    2. Rails開発のためのOSXへのPostgreSQLのインストール

    3. PostgreSQLパーティションシーケンスを作成するにはどうすればよいですか?

    4. PostgresイベントトリガーからSQLテキストを取得する方法