WITH base AS (
SELECT
a.prd_no,
c.CAP1,
c.WV,
c.FL,
c.TOL,
CAST(a.qty AS DECIMAL(18,4)) AS qty,
CAST(b.pk2_qty AS DECIMAL(18,4)) AS pk2_qty,
CEILING(
CAST(a.qty AS DECIMAL(18,4)) / NULLIF(CAST(b.pk2_qty AS DECIMAL(18,4)), 0)
) AS row_cnt
FROM tf_pss a
INNER JOIN prdt b ON a.prd_no = b.prd_no
INNER JOIN prdt_z c ON b.prd_no = c.PRD_No
WHERE a.ps_no =:PS_NO
),
nums AS (
SELECT TOP (100000)
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rn
FROM sys.all_objects a
CROSS JOIN sys.all_objects b
)
SELECT
base.prd_no,
base.CAP1,
base.WV,
base.FL,
base.TOL,
base.pk2_qty,
nums.rn AS 行号,
CASE
WHEN nums.rn < base.row_cnt THEN base.pk2_qty
ELSE base.qty - base.pk2_qty * (nums.rn - 1)
END AS byqty
FROM base
INNER JOIN nums ON nums.rn <= base.row_cnt
ORDER BY base.prd_no, nums.rn;
最后修改:2026 年 06 月 10 日
© 允许规范转载