1

2つのテーブルを結合または同様の構成で組み合わせて、一致しないすべてのフィールドを1つのグループに含めることは可能ですか。このようなもの:部門名を持つすべての従業員は実際の部門を取得し、部門を持たないすべての従業員はグループ「その他」になります。

部門:SectionDesc ID
Dep1 500
Dep2 501

従業員:名前ID
Anders 500
Erik 501
root 0

出力:Anders Dep1
ErikDep2root
その他

よろしくアンダースオルメ

4

1 に答える 1

3

あなたが探しているのは外部結合です:

 SELECT e.name, d.name
 FROM employee e 
 LEFT OUTER JOIN departments d ON e.deptid = d.deptid

これにより、部門のないすべての従業員に NULL の d.name が与えられます。次のようにして、これを「その他」に変更できます。

CASE WHEN d.name IS NULL THEN 'Other' Else d.name END 

(さまざまな DBMS 用の他の単純なバージョンが存在しますが、これはほとんどの場合に機能するはずです。)

QlikView のすべての結合は既定で内部結合であるため、QlikView は少し注意が必要です。オンライン ヘルプには、さまざまな結合に関する議論がいくつかあります。短いバージョンでは、データを読み取るスクリプトで、さまざまな結合に基づいて新しいテーブルを作成できるということです。したがって、スクリプトに次のようなものを含めることができます。

Emps: SELECT * FROM EMPLOYEES;
Deps: SELECT * FROM DEPARTMENTS;
/* or however else you get your data into QlikView */

EmpDep:
SELECT Emps.name, Deps.name
FROM EMPS LEFT JOIN Deps

この結合が機能するには、結合の列名が両方のテーブルで同じである必要があります。(必要に応じて、ベース テーブルをロードするときに、結合用の新しい列を作成できます。)

于 2009-11-16T11:40:59.870 に答える