これは動作するはずです助けてください:
SELECT ISNULL(CHILDREN_TABLE.READ_ACCESS, PARENT_TABLE.READ_ACCESS) AS READ_ACCESS
FROM TABLE AS PARENT_TABLE
LEFT JOIN TABLE AS CHILDREN_TABLE
ON CHILDREN_TABLE.Parent = PARENT_TABLE.Child
それはあなたの重複を与える、あなたがSELECT DISTINCT
...
でこれを解決することができます(
Inventory Report
ための2行、
Stock Alert Report
と
Stock Movement Report
に1つに1つ)にもかかわらず
OR、私は子供のテーブルでGROUP BYを追加すると、重複を解決すると信じて:
SELECT ISNULL(CHILDREN_TABLE.READ_ACCESS, PARENT_TABLE.READ_ACCESS) AS READ_ACCESS
FROM TABLE AS PARENT_TABLE
LEFT JOIN (SELECT Parent, READ_ACCESS FROM TABLE GROUP BY Parent) AS CHILDREN_TABLE
ON CHILDREN_TABLE.Parent = PARENT_TABLE.Child
がY
であり、もう1つがREAD_ACCESS
でN
である子がある場合、今でも複製は得られます。しかし、これはあなたのビジネスルールと議論する必要があるように思えます。
この例では、レポートテーブルに複数の階層レベルが存在する可能性があります。報告書とその即時*の子どもが 'READ_ACCESS = 'N' 'を持ち、*孫の*のうちの1人が' 'Y' 'を持つ場合、' 'Y' 'が祖父母に伝播することを望みますか? –
祖父母は「Y」になります – user998405