gpt4 book ai didi

SQL - 抑制查询的重复列(不是行)

转载 作者:行者123 更新时间:2023-12-05 00:38:19 26 4
gpt4 key购买 nike

我有一个查询返回这样的内容......

数据集 1:

EFFECTIVE_DATE END_DATE DESC                            SUBPART

4/10/2011 Dairy Products Processing L
4/10/2011 360 CMR 10.000
4/1/2011 4/9/2011 Dairy Products Processing A
4/1/2011 4/9/2011 Ferroalloy Manufacturing A

我正在寻找一个查询,返回这样的数据集......

数据集 2:
   EFFECTIVE_DATE END_DATE  DESC                            SUBPART

4/10/2011 Dairy Products Processing L
360 CMR 10.000
4/1/2011 4/9/2011 Dairy Products Processing A
Ferroalloy Manufacturing A

请注意,重复的生效日期(4/10/2011 - {null} 和 4/1/2011 - 4/9/2011)在重复时被抑制。

编辑 1:回应@Justin Cave 的回答,

下面是我与 Justin Cave 模板合并的查询。它很接近,但它有点偏离。日期和描述似乎与它们应该是的有点混淆(数据集中的数据应该像数据集 2 中的数据:。我认为这可能与我的订购有关,但我不确定.
SELECT (CASE WHEN effective_date = prior_effective_date 
THEN null
ELSE effective_date
END) effective_date,
(CASE WHEN end_date = prior_end_date
THEN null
ELSE end_date
END) end_date,
cfr_part_desc ,
cfr_subpart
FROM
(SELECT c.effective_date,
lag(c.effective_date) over (order by c.effective_date desc, cpl.cfr_part_desc asc) prior_effective_date,
c.end_date,
lag(c.end_date) over (order by c.effective_date desc, cpl.cfr_part_desc asc) prior_end_date,
cpl.CFR_PART_DESC as cfr_part_desc,
cd.CFR_SUBPART as cfr_subpart
from table1 c
inner join table2 cd ON c.IND_ID = cd.IND_ID
AND cd.EFFECTIVE_DATE = c.EFFECTIVE_DATE
inner join table3 cpl on cd.CFR_PART_L_S = cpl.CFR_PART_L_S
inner join table4 f on c.ind_id = f.ind_id
inner join table5 p on f.ind_id = p.ind_id
where p.PERMIT_S = '4988'
order by c.effective_date desc, cpl.CFR_PART_DESC asc
);

Image

编辑 2:不正确的数据是由于对列生效日期的定义含糊不清。上面的查询现在可以正常工作。

最佳答案

我认为您正在使用分析函数寻找类似的东西。我不清楚结果集是如何排序的,因此您必须填写它。您也可能能够将分析函数组合到您的查询中,而不是添加第三级嵌套。

SELECT (CASE WHEN effective_date = prior_effective_date 
THEN null
ELSE effective_date
END) effective_date,
(CASE WHEN end_date = prior_end_date
THEN null
ELSE end_date
END) end_date,
description ,
subpart
FROM
(SELECT effective_date,
lag(effective_date) over
(order by effective_date desc, description asc) prior_effective_date,
end_date,
lag(end_date) over
(order by effective_date desc, description asc) prior_end_date,
desc,
subpart
FROM <<your query>>)

关于SQL - 抑制查询的重复列(不是行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5722458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com