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

Dữ liệu SQL lộn xộn - Chọn trong câu lệnh cập nhật

Tôi sẽ tính toán trước các giá trị hàng đầu và lưu trữ chúng trong một bảng tạm thời trước khi thực hiện CẬP NHẬT:

SELECT
    R1.Date,
    R1.ContestID,
    (SELECT TOP 1 R2.Position
     FROM Results R2
     WHERE R2.Date = R1.Date AND R2.ContestID = R1.ContestID
     ORDER BY R2.Position DESC) AS TopPosition
INTO #temp
FROM
    (SELECT DISTINCT Date, ContestID FROM Results) R1;

UPDATE Results R
SET    R.Points = 100 + ((100/((SELECT TopPosition FROM #temp T
                                WHERE T.Date = R.Date AND
                                      T.ContestID = R.ContestID)-4) *
                            ((SELECT TopPosition FROM #temp T
                              WHERE T.Date = R.Date AND
                                    T.ContestID = R.ContestID)-R.Position)))
WHERE  R.ContestID > 11
AND    R.Position > 4
AND    R.Position < (SELECT TopPosition FROM #temp T
                     WHERE T.Date = R.Date AND T.ContestID = R.ContestID);

Tuy nhiên, tôi không chắc cách NumberOfResultsNumberOfPlaces được định nghia. Bạn đang chọn một vị trí hàng đầu nhưng không bao giờ tính toán bất kỳ con số nào. Có thể bạn có thể thêm cái này vào phần CHỌN:

...,
(SELECT COUNT(*)
 FROM Results R2
 WHERE R2.Date = R1.Date AND R2.ContestID = R1.ContestID) AS NumberOfResults
INTO ...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đường mòn kiểm tra với Core Framework thực thể

  2. SQL Server 2008 Tạo một chuỗi ngày giờ

  3. Kết hợp cách ly trong một nhóm

  4. tsql lần xuất hiện cuối cùng bên trong một chuỗi

  5. Báo cáo khách hàng từ ứng dụng web