SqlServer: LAG等开窗函数应用

原贴:

https://bbs.csdn.net/topics/619167074

https://learn.microsoft.com/zh-cn/sql/t-sql/functions/lag-transact-sql?view=sql-server-ver16

CREATE TABLE #kcb(
	xlh       INT,
	shul      INT,
	ftshl     INT
)
INSERT INTO #kcb(xlh,shul,ftshl)
SELECT 1,20,0
union
SELECT 2,55,0
union 
SELECT 3,100,0
-- 以上为创建测试表及测试数据

--给定30为初值,如何分给1、2、3这三行,分完为止
DECLARE @v INT = 30;
WITH cte AS (
	SELECT *,
        --以xlh字段排序,累加 shul 值
		SUM(shul) OVER(ORDER BY xlh) AS 累加值
	FROM   #kcb
),cte2 AS(
    SELECT *,
        --以xlh字段排序,取上1行的累加值,如果没有就取0
        lag(累加值, 1, 0) OVER(ORDER BY xlh) AS 上一行累加值
    FROM   cte
)
SELECT xlh,shul,累加值,上一行累加值,
	CASE 
		WHEN 累加值 <=@v  THEN shul
		WHEN 累加值 >@v AND 上一行累加值 <@v THEN @v -上一行累加值
		ELSE 0
	END AS 当前行分配值
FROM   cte2

相关推荐

  1. SQL函数

    2024-07-21 12:12:04       29 阅读
  2. 函数MYSQL

    2024-07-21 12:12:04       25 阅读
  3. Spark函数之ROW

    2024-07-21 12:12:04       28 阅读
  4. sql中函数的使用

    2024-07-21 12:12:04       32 阅读
  5. hive中函数row_number的使用

    2024-07-21 12:12:04       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 12:12:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 12:12:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 12:12:04       45 阅读
  4. Python语言-面向对象

    2024-07-21 12:12:04       55 阅读

热门阅读

  1. leetcode位运算(1720. 解码异或后的数组)

    2024-07-21 12:12:04       16 阅读
  2. 数据结构 day1

    2024-07-21 12:12:04       14 阅读
  3. 5 webSocket

    2024-07-21 12:12:04       18 阅读
  4. 什么是样本不平衡?

    2024-07-21 12:12:04       15 阅读
  5. 面向开发者的提示词工程第六章-文本转换

    2024-07-21 12:12:04       16 阅读
  6. c++应用网络编程之四Linux常用的网络IO模型

    2024-07-21 12:12:04       18 阅读
  7. 【NLP】关于参数do_sample的解释

    2024-07-21 12:12:04       15 阅读
  8. DAY17-二叉树

    2024-07-21 12:12:04       19 阅读
  9. 【Linux】vim编辑器使用详解

    2024-07-21 12:12:04       19 阅读