最近,我对从数据仓库获得的数据有非常具体的问题。问题已经解决,但是我必须编辑控制环境一段时间。
我们有关于收到的发票的数据,但是由于某些原因,每张发票的信息都分为两行:第一行包含重要的列 unique_code_A , vendor_number 和第二行包含重要列 unique_code_B ,金额。因此,每张发票都有非常特定的唯一代码,并且必须使用此代码以某种方式将两行中的信息结合起来,如您在图片中所见。
答案 0 :(得分:1)
好吧,您可以使用聚合:
select date_key, invoice_type,
max(case when unique_code_b is null then unique_code_a end) as unique_code_a,
max(unique_code_b) as unique_code_b,
max(case when unique_code_b is null then vendor_number end) as vendor_number,
max(case when unique_code_b is not null then amount end) as amount
from t
group by date_key, invoice_type;
编辑:
如果可以使用唯一代码进行匹配,那么我建议:
select date_key, invoice_type,
coalesce(unique_code_a, unique_code_b) as unique_code,
max(case when unique_code_b is null then vendor_number end) as vendor_number,
max(case when unique_code_b is not null then amount end) as amount
from t
group by date_key, invoice_type, coalesce(unique_code_a, unique_code_b);
答案 1 :(得分:1)
根据您所说的,自我加入可能应该起作用:
SELECT
A.DATE_KEY,
A.INVOICE_TYPE,
A.UNIQUE_CODE_A,
B.UNIQUE_CODE_B,
A.VENDOR_NUMBER,
B.AMOUNT
FROM MyTable A
INNER JOIN MyTable B ON A.UNIQUE_CODE_A=B.UNIQUE_CODE_B