我需要根据两个字段制作一个小计字段

I need to make a subtotal field based off of two fields

我有两个表 Qut1Qut10

Qut1 有报价行项目列表

Id LineNum Price
1  0       10
1  1       20
1  2       100

Qut10 包含应出现小计的行

Id AfterLineNum
1  1
1  2

任何人都知道我如何创建脚本来为我提供需要加在一起以获得小计的行号?

ie (1, 1.1 (即放在 qut1 第 1 行之后,第 2 行之前), 30 (1, 2.1, 100)

这是一个将每个行项目映射到其相应小计的查询。它 JOIN 对两个表进行查询,并使用具有 NOT EXIST 条件的相关子查询来确保选择相关的小计记录。

SELECT
  t1.LineNum,
  t1.Price,
  t2.AfterLineNum
FROM
    Qut1 t1
    INNER JOIN Qut10 t2 
        ON t2.AfterLineNum >= t1.LineNum
        AND NOT EXISTS (
            SELECT 1 
            FROM Qut10 
            WHERE AfterLineNum >= LineNum AND AfterLineNum < t2.AfterLineNum
        )
ORDER BY
    t2.AfterLineNum ,
    t1.LineNum

您没有标记您的 RDBMS,但这是标准 SQL,应该适用于大多数平台。

This DB Fiddle demo 你的样本数据产量:

| LineNum | Price | AfterLineNum |
| ------- | ----- | ------------ |
| 0       | 10    | 1            |
| 1       | 20    | 1            |
| 2       | 100   | 2            |

如果您希望实际计算小计,您只需打开 聚合 :

SELECT
  t2.AfterLineNum,
  SUM(t1.Price) subtotal
FROM
    Qut1 t1
    INNER JOIN Qut10 t2 
        ON t2.AfterLineNum >= t1.LineNum
        AND NOT EXISTS (
            SELECT 1 
            FROM Qut10 
            WHERE AfterLineNum >= LineNum AND AfterLineNum < t2.AfterLineNum
        )
GROUP BY t2.AfterLineNum
ORDER BY t2.AfterLineNum

DB Fiddle :

| AfterLineNum | subtotal |
| ------------ | -------- |
| 1            | 30       |
| 2            | 100      |