32 lines
1.1 KiB
PL/PgSQL
32 lines
1.1 KiB
PL/PgSQL
-- Reinterpret the existing FloorPlanFloors.SortOrder integer as user-facing floor Level.
|
|
-- This preserves current relative order for legacy 10-step SortOrder data without adding schema.
|
|
|
|
IF OBJECT_ID(N'dbo.FloorPlanFloors', N'U') IS NOT NULL
|
|
BEGIN
|
|
;WITH LegacyPlans AS
|
|
(
|
|
SELECT FloorPlanID
|
|
FROM dbo.FloorPlanFloors
|
|
GROUP BY FloorPlanID
|
|
HAVING COUNT(*) > 0
|
|
AND MIN(SortOrder) >= 10
|
|
AND SUM(CASE WHEN SortOrder % 10 = 0 THEN 0 ELSE 1 END) = 0
|
|
),
|
|
OrderedFloors AS
|
|
(
|
|
SELECT
|
|
fpf.FloorPlanFloorID,
|
|
ROW_NUMBER() OVER (PARTITION BY fpf.FloorPlanID ORDER BY fpf.SortOrder, fpf.Name, fpf.FloorPlanFloorID) - 1 AS FloorLevel
|
|
FROM dbo.FloorPlanFloors fpf
|
|
INNER JOIN LegacyPlans lp ON lp.FloorPlanID = fpf.FloorPlanID
|
|
)
|
|
UPDATE fpf
|
|
SET
|
|
SortOrder = ordered.FloorLevel,
|
|
ModifiedDate = SYSUTCDATETIME()
|
|
FROM dbo.FloorPlanFloors fpf
|
|
INNER JOIN OrderedFloors ordered ON ordered.FloorPlanFloorID = fpf.FloorPlanFloorID
|
|
WHERE fpf.SortOrder <> ordered.FloorLevel;
|
|
END;
|
|
GO
|