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

Thực hiện các phép tính trong sql

Tôi nghĩ rằng việc thêm biểu thức trường hợp sau vào câu lệnh chọn của bạn nên làm điều đó:

CASE WHEN 
   SUM(LandingDetails.Quantity * LandingDetails.UnitPrice) 
   - 
   SUM(LandingDetails.Quantity * LandingDetails.UnitPrice) * DeductionRate + WeeklyDeductionRate 
   > FromMinimumReturn 
THEN SUM(LandingDetails.Quantity * LandingDetails.UnitPrice) * DeductionRate + WeeklyDeductionRate
ELSE 0 END
AS TotalDeductions

Tuy nhiên, điều này có rất nhiều mã lặp lại (phép tính Sở hữu), vì vậy tôi sẽ đặt truy vấn ban đầu trong một biểu thức bảng chung và thực hiện như sau:

WITH cte AS (
  <<<your original query here>>> -- I left it out to save space...
)

SELECT 
    ContactId,
    Owed,
    WeeklyDeductionRate,
    FromMinimumReturn,
    DeductionRate,
    CASE 
       WHEN Owed - (Owed * DeductionRate + WeeklyDeductionRate) > FromMinimumReturn 
       THEN Owed * DeductionRate + WeeklyDeductionRate
       ELSE 0 END
    AS TotalDeductions
FROM cte

Điều này sẽ trở lại TotalDeductions đã tính nếu trừ nó khỏi Owed để lại kết quả so với FromMinimumReturn, nếu không nó sẽ trả về 0 cho TotalDeductions.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để tăng kích thước tệp đính kèm tối đa được phép cho email được gửi bằng msdb.dbo.sp_send_dbmail trong Microsoft SQL Server 2005/2008

  2. .NET API cho SQL Server Service Broker

  3. Truy vấn SQL cho KIỂM TRA CHI-SQUARE

  4. Đăng nhập không thành công cho người dùng xxx Không mở được giải pháp cơ sở dữ liệu được chỉ định rõ ràng

  5. Bất kỳ lý do nào để cài đặt SQL Server 2005 và 2008 trên cùng một máy?