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

Sử dụng tổng hợp có điều kiện trong SQL Server 2008

Chỉ cần thêm truy vấn thứ hai vào danh sách cột của truy vấn đầu tiên vì nó sẽ chỉ trả về một hàng. Hãy thử điều này.

SELECT Sum(CASE
             WHEN MONTH = '2013-8-1' THEN CurrentStock
             ELSE 0
           END)                                 AS CurrentStock,
       Isnull(Sum(CASE WHEN MONTH = '2014-2-1' THEN CPU ELSE 0 END), 0) - 
       Isnull(Sum(CASE WHEN MONTH = '2013-8-1' THEN CPU ELSE 0 END), 0) AS CPU,
       Sum(CASE WHEN Month = '2013-8-1' THEN NonCPUWIP ELSE 0 END) AS NonCPU,
       Isnull(Sum(CASE WHEN MONTH = '2014-2-1' THEN ScrapDiscarded ELSE 0 END), 0) - 
       Isnull(Sum(CASE WHEN MONTH = '2013-8-1' THEN ScrapDiscarded ELSE 0 END), 0)AS Scrap,
       Sum(CASE WHEN Month = '2013-8-1' THEN WaitingForApproval ELSE 0 END) AS WFA,
       (SELECT Count(STBSerialNUMBER)
        FROM   OutStock
        WHERE  DispatchDate BETWEEN '2013-8-1' AND '2014-2-1'
                AND Vendor = 'abc' ) as Despatched
FROM   Instock I
WHERE  Vendor = 'abc'

Cập nhật:

Nếu bạn muốn tổng số kết quả của từng mô hình thì hãy chuyển đổi subquery nó thành correlated subquery . phải là một cái gì đó giống như

  (SELECT Count(STBSerialNUMBER)
   FROM   OutStock O
   WHERE o.model = i.model  -- here is the change
   AND O.DispatchDate BETWEEN '2013-8-1' AND '2014-2-1'
   AND o.Vendor = 'abc')

Tại đây cho mỗi model trong Instock lập bảng count tương ứng trong outstock sẽ được caluclated.

Hoặc bạn cũng có thể sử dụng Left Join . Trước tiên, hãy tính số lượng của mỗi model trong Outstock bảng join kết quả quay lại Instock bảng sử dụng mô hình

   ....
   From Instock I Left Join 
   (SELECT Count(STBSerialNUMBER) OutStock_count,Model
   FROM   OutStock O
   WHERE  O.DispatchDate BETWEEN '2013-8-1' AND '2014-2-1'
   AND o.Vendor = 'abc'
   Group by Model) O on o.model = i.model



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm hiểu phân vùng nào mà một giá trị nhất định sẽ được ánh xạ tới trong SQL Server (T-SQL)

  2. Quên mật khẩu máy chủ SQL

  3. Cách Dừng / Khởi động Hàng đợi Thư Cơ sở dữ liệu trong SQL Server (T-SQL)

  4. Kết nối với SQL Server bằng xác thực cửa sổ

  5. Mệnh đề WHERE sử dụng các giá trị có thể là NULL