Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Truy vấn SQL để so sánh doanh số bán sản phẩm theo tháng

Báo cáo Vụ án là người bạn sql tốt nhất của tôi. Bạn cũng cần một bảng về thời gian để tạo vòng quay 0 của mình trong cả hai tháng.

Các giả định dựa trên sự sẵn có của các bảng sau:

Ví dụ 1 không có hàng trống:

select
    Category
    ,month
    ,SUM(CASE WHEN YEAR = 2008 THEN Revenue ELSE 0 END) this_year
    ,SUM(CASE WHEN YEAR = 2007 THEN Revenue ELSE 0 END) last_year

from
    sales

where
    year in (2008,2007)

group by
    Category
    ,month

QUAY LẠI:

Category  |  Month  |  Rev. This Year  |  Rev. Last Year
Bikes          1          10 000               0
Bikes          2          12 000               11 000
Bikes          3          12 000               11 500
Bikes          4          0                    15 400

Ví dụ 2 với các hàng trống:Tôi sẽ sử dụng một truy vấn phụ (nhưng những người khác có thể không) và sẽ trả về một hàng trống cho mọi kết hợp sản phẩm và năm tháng.

select
    fill.Category
    ,fill.month
    ,SUM(CASE WHEN YEAR = 2008 THEN Revenue ELSE 0 END) this_year
    ,SUM(CASE WHEN YEAR = 2007 THEN Revenue ELSE 0 END) last_year

from
    sales
    Right join (select distinct  --try out left, right and cross joins to test results.
                   product
                   ,year
                   ,month
               from
                  sales --this ideally would be from a products table
                  cross join tm
               where
                    year in (2008,2007)) fill


where
    fill.year in (2008,2007)

group by
    fill.Category
    ,fill.month

QUAY LẠI:

Category  |  Month  |  Rev. This Year  |  Rev. Last Year
Bikes          1          10 000               0
Bikes          2          12 000               11 000
Bikes          3          12 000               11 500
Bikes          4          0                    15 400
Bikes          5          0                    0
Bikes          6          0                    0
Bikes          7          0                    0
Bikes          8          0                    0

Lưu ý rằng hầu hết các công cụ báo cáo sẽ thực hiện chức năng bảng chéo hoặc ma trận này và bây giờ tôi nghĩ về nó, SQL Server 2005 có cú pháp pivot cũng sẽ thực hiện điều này.

Dưới đây là một số tài nguyên bổ sung.CASE http://www.4guysfromrolla.com/webtech/ 102704-1.shtml SQL SERVER 2005 PIVOT http://msdn.microsoft.com/en-us /library/ms177410.aspx



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 11 cách lấy khóa chính trong SQL Server (ví dụ T-SQL)

  2. SQL Server 2005 Đặt một biến cho kết quả của một truy vấn chọn

  3. Vô hiệu hóa ràng buộc khóa ngoại, vẫn không thể cắt bớt bảng? (SQL Server 2005)

  4. Làm cách nào để xuất XML bằng truy vấn SQL Server?

  5. Ràng buộc duy nhất chỉ trên cột KHÔNG ĐỦ