我对 UNPIVOT 有疑问。
最初的情况是我收到一些列数固定的文件,我必须像这样将它们导入我的数据库。这意味着我的表有例如 10 个部门列:departement_1、department_2、departement_3、...
基于这些数据,我需要创建一些只有 1 列的视图,因为我受限于要导入数据的软件。
这是我做的一个视图:
SELECT reference, libelle, date_naissance, pays_naissance, nationalite,
pays_fiscal, nif, us_tin, us_person, type_activite, etat_civil, rac,
pep, departement, etat_individu, relation
FROM S2i_individu
LEFT JOIN relation_individu
ON S2i_individu.reference = relation_individu.individu
UNPIVOT (
pays_fiscal FOR t1 IN (pays_fiscal_1, pays_fiscal_2, pays_fiscal_3)
) UNPIV
UNPIVOT (
nif FOR t2 IN (nif_1, nif_2, nif_3)
) UNPIV
UNPIVOT (
departement for t3 in (departement_1, departement_2, departement_3, departement_4, departement_5, departement_6, departement_7, departement_8, departement_9, departement_10)
) UNPIV
WHERE import_id = (SELECT TOP(1) id FROM import ORDER BY import_date DESC)
我的问题是,根据 UNPIVOT 的性质,结果是 departement、nif 和 pays_fiscal 的笛卡尔积。这意味着对于 S2i_individu 中的每个条目,我将始终有 90 行。
如果没有数据,有人知道限制为 1 行的方法吗?就像如果我没有 pays_fiscal、nif 和 departement 的任何数据,我的结果中仍然只有一行吗?