Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Berbeda berdasarkan tanggal pemesanan dan produk SQL Server 2008

Data sampel dan hasil yang diinginkan akan membantu. Ketika Anda mengatakan "berbeda dengan", saya berasumsi bahwa yang Anda maksud adalah kelompok menurut. Perhatikan, dalam klausa WHERE Anda tidak perlu menggunakan Order.OrderDate jika Anda memastikan bahwa komponen waktu dari parameter @from &@to Anda disetel dengan benar (untuk menyertakan setiap hari sepanjang hari). Bukan ide yang baik untuk menerapkan operasi cast ke sisi kiri perbandingan.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengecualian parameter maksimum SqlCommand pada parameter 2099

  2. Kinerja Server Sql Dan Urutan Bidang

  3. Eksekusi kueri SSRS gagal untuk kumpulan data

  4. SQL Server Baris maksimum yang dapat disisipkan dalam satu pernyataan insert

  5. bagaimana cara menampilkan hanya baris genap atau ganjil di sql server 2008?