Sql 计算第1行和零个重复项的总和

Sql 计算第1行和零个重复项的总和,sql,Sql,我有一个使用windows函数的sql查询,我设法从表2中计算记录的总和,但是在从表1中删除重复的total并仅在第1行中显示总和时遇到了问题 查询: 选择--row_number()(按TABLE01.ITEMID按TABLE01.ITEMID顺序)作为rownumber, TABLE01.ITEMID,TABLE01.WAREHOUSE,TABLE01.LOCATION,TABLE01.INVENTORY AS TABLE01 INVENTORY,TABLE02.ITEMID, 表02.仓库

我有一个使用windows函数的sql查询,我设法从表2中计算记录的总和,但是在从表1中删除重复的total并仅在第1行中显示总和时遇到了问题

查询:

选择--row_number()(按TABLE01.ITEMID按TABLE01.ITEMID顺序)作为rownumber,
TABLE01.ITEMID,TABLE01.WAREHOUSE,TABLE01.LOCATION,TABLE01.INVENTORY AS TABLE01 INVENTORY,TABLE02.ITEMID,
表02.仓库,表02.位置,表02.位置名称,表02.库存为表02库存,
--(合并(表02.库存,0))为表02库存,
总计(TABLE02.inventory)超过(按TABLE01.ITEMID划分,按TABLE01.ITEMID排序)作为SUMTable02库存--,
,(TABLE01.库存总额(TABLE02.库存)超过(按TABLE01.ITEMID划分,按TABLE01.ITEMID排序)作为VARBYSUM
从Table01向左连接Table01.ITEMID=Table02.ITEMID和Table01.warehouse=Table02.warehouse上的Table02
按TABLE01.ITEMID、TABLE01.WAREHOUSE、TABLE01.LOCATION、TABLE01.INVENTORY、TABLE02.ITEMID、,
表02.仓库,表02.位置,表02.位置名称,表02.存货
输出: +---------+-----------+----------+------------------+---------+-----------+----------+--------------+------------------+---------------------+----------+ |ITEMID |仓库|位置|表01库存| ITEMID |仓库|位置|位置名称|表02库存| Sumtable02库存| VARBYSUM| +---------+-----------+----------+------------------+---------+-----------+----------+--------------+------------------+---------------------+----------+ |项目001 | WHS001 | LOC001 | 5 |项目001 | WHS001 | T01 |技术001 | 1 | 6 |-1| +---------+-----------+----------+------------------+---------+-----------+----------+--------------+------------------+---------------------+----------+ |项目001 | WHS001 | LOC001 | 5 |项目001 | WHS001 | T02 |技术002 | 2 | 6 |-1| +---------+-----------+----------+------------------+---------+-----------+----------+--------------+------------------+---------------------+----------+ |项目001 | WHS001 | LOC001 | 5 |项目001 | WHS001 | T03 |技术003 | 3 | 6 |-1| +---------+-----------+----------+------------------+---------+-----------+----------+--------------+------------------+---------------------+----------+ |项目002 | WHS001 | LOC002 | 4 |项目002 | WHS001 | T01 |技术001 | 1 | 4 | 0| +---------+-----------+----------+------------------+---------+-----------+----------+--------------+------------------+---------------------+----------+ |项目002 | WHS001 | LOC002 | 4 |项目002 | WHS001 | T02 |技术002 | 3 | 4 | 0| +---------+-----------+----------+------------------+---------+-----------+----------+--------------+------------------+---------------------+----------+ |项目003 | WHS001 | LOC003 | 2 |空|空|空|空|空|空| +---------+-----------+----------+------------------+---------+-----------+----------+--------------+------------------+---------------------+----------

预期产出:

+---------+-----------+----------+------------------+---------+-----------+----------+--------------+------------------+---------------------+----------+ |ITEMID |仓库|位置|表01库存| ITEMID |仓库|位置|位置名称|表02库存| Sumtable02库存| VARBYSUM| +---------+-----------+----------+------------------+---------+-----------+----------+--------------+------------------+---------------------+----------+ |项目001 | WHS001 | LOC001 | 5 |项目001 | WHS001 | T01 |技术001 | 1 | 6 |-1| +---------+-----------+----------+------------------+---------+-----------+----------+--------------+------------------+---------------------+----------+ |项目001 | WHS001 | LOC001 | 0 |项目001 | WHS001 | T02 |技术002 | 2 | 0 | 0| +---------+-----------+----------+------------------+---------+-----------+----------+--------------+------------------+---------------------+----------+ |项目001 | WHS001 | LOC001 | 0 |项目001 | WHS001 | T03 |技术003 | 3 | 0| +---------+-----------+----------+------------------+---------+-----------+----------+--------------+------------------+---------------------+----------+ |项目002 | WHS001 | LOC002 | 4 |项目002 | WHS001 | T01 |技术001 | 1 | 4 | 0| +---------+-----------+----------+------------------+---------+-----------+----------+--------------+------------------+---------------------+----------+ |项目002 | WHS001 | LOC002 | 0 |项目002 | WHS001 | T02 |技术002 | 3 | 0 | 0| +---------+-----------+----------+------------------+---------+-----------+----------+--------------+------------------+---------------------+----------+ |项目003 | WHS001 | LOC003 | 2 |空|空|空|空|空|空|
+---------+-----------+----------+------------------+---------+-----------+----------+--------------+------------------+---------------------+----------

如果我理解正确,您可以使用
行号()
大小写
表达式。下面显示了
表01库存的情况SELECT t1.ITEMID, t1.WAREHOUSE, t1.LOCATION,  
       (CASE WHEN 1 = row_number() over (partition by t1.ITEMID , t1.warehouse, t1.location order by t2.location)
             THEN t1.INVENTORY
        END) AS TABLE01INVENTORY,
       t2.ITEMID, t2.WAREHOUSE, t2.LOCATION,
       t2.LOCATIONNAME, t2.inventory AS TABLE02INVENTORY,
--(coalesce(table02.inventory,0)) AS TABLE02INVENTORY,
       SUM(t2.inventory) OVER (PARTITION BY t1.ITEMID order by t1.ITEMID  ) as SUMTABLE02INVENTORY,
       (t1.inventory - SUM(t2.inventory) OVER (PARTITION BY t1.ITEMID order by t1.ITEMID )) AS VARBYSUM 
FROM Table01 t1 LEFT JOIN
     Table02 t2 
     ON t1.ITEMID = t2.ITEMID AND
        t1.warehouse = t2.warehouse 
GROUP BY t1.ITEMID, t1.WAREHOUSE, t1.LOCATION, t1.INVENTORY, t2.ITEMID, 
         t2.WAREHOUSE, t2.LOCATION, t2.LOCATIONNAME, t2.inventory;