问题描述
我写了一个查询,返回的结果如下:
实际上,我要跟踪的是特定act_desc_的日期,doc_no和qty,有人可以帮我重写PL SQL中的查询重整吗?如果有人可以帮助我,我将不胜感激。
解决方法
自从您发布图像以来,我将为您提供一个示例,说明如何使用一些快速的模拟数据以及SQL:
select ACT_DESC,MAX(EXCAVATION_QTY) as EXCAVATION_QTY,MAX(FORM_WORK_COMPLETION_QTY) as FORM_WORK_COMPLETION_QTY
from (
select QTY,ACT_DESC,TASK,CASE WHEN TASK = 'EXCAVATION' THEN QTY ELSE NULL END as EXCAVATION_QTY,CASE WHEN TASK = 'Form Work Completion' THEN QTY ELSE NULL END as FORM_WORK_COMPLETION_QTY
FROM
(
select 1 as QTY,'a' as ACT_DESC,'Excavation' as TASK
UNION ALL
select 2 as QTY,'Form Work Completion' as TASK
UNION ALL
select 11 as QTY,'b' as ACT_DESC,'Excavation' as TASK
UNION ALL
select 22 as QTY,'Form Work Completion' as TASK
) as t
) t1
GROUP BY ACT_DESC
并将其转换为: https://github.com/microsoftgraph/msgraph-sdk-javascript
,/ * 可以使用许多复杂的查询,但这是一个快速的方法 简单的方法是先创建基表,然后再填充基表。 * / -步骤1:使用正确的数据类型的列创建空的基表
INSERT INTO BASE_TABLE
(
SELECT DISTINCT
ACT_DESC_
FROM
SOURCE_TABLE
);
-步骤2:将唯一的ACT_DESC_值插入基表中
MERGE INTO BASE_TABLE TGT --Alias TGT short for TarGeT table
USING
(
SELECT * FROM SOURCE_TABLE
WHERE TASK_ = 'Excavaion'
) SRC --Alias SRC short for SouRCe table
ON ( TGT.ACT_DESC_ = SRC.ACT_DESC_ )
WHEN MATCHED THEN UPDATE
SET
TGT.EXCAVATION_QTY = SRC.QTY
TGT.EXCAVATION_APP_DATE = SRC.APP_DATE
TGT.EXCAVATION_DOC_NO = SRC.DOC_NO;
-使用合并语句 -步骤3:根据TASK_ ='挖掘'更新基表
MERGE INTO BASE_TABLE TGT --Alias TGT short for TarGeT table
USING
(
SELECT * FROM SOURCE_TABLE
WHERE TASK_ = 'Form Work Completion'
) SRC --Alias SRC short for SouRCe table
ON ( TGT.ACT_DESC_ = SRC.ACT_DESC_ )
WHEN MATCHED THEN UPDATE
SET
TGT.FORM_WORK_COMP_QTY = SRC.QTY
TGT.FORM_WORK_COMP_APP_DATE = SRC.APP_DATE
TGT.FORM_WORK_COMP_DOC_NO = SRC.DOC_NO;
-步骤4:基于TASK_ =“表单工作完成”更新基本表
{{1}}