Join <> Vlookup...

fiammdin

Neuer Benutzer
Beiträge
2
Hi zusammen,

schon vorab vielen lieben dank für jede Hilfestellung die ich bekomme. Ich sitze schon den ganzen Tag am Problem und komm einfach nicht weiter...

Was mich verückt macht ist das es in Excel super einfach gehen würde, und SQL ist ja wohl besser als Excel... :)

Ich hab meine Fragestellung in das beigelegte Worddokument angehängt, da ich keine Tabellen im Forum erstellen kann.

Vielen Lieben Dank an alle
 

Anhänge

  • Vlookup nicht gleich InnerJoin.zip
    7,2 KB · Aufrufe: 2
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.394
Enorm hifreich wäre es jetzt noch, den Code für die View zu kennen dann sollte zumindest Frage 1) zu beantworten sein.
 

fiammdin

Neuer Benutzer
Beiträge
2
Hi,

Danke für deinen Support.
Leider kam ich erst heute wieder dazu mich an die DB anzumelden.
Aber hier die Scripts.

1. View für die ZwischenTabelle die mir Label und Description zusammenbringt:

SELECT dbo.XXX_ACCOUNT_ITEM.Label, dbo.XXX_ACCOUNT_DESC.Description AS HFM_Description
FROM dbo.XXX_ACCOUNT_DESC INNER JOIN
dbo.XXX_ACCOUNT_ITEM ON dbo.XXX_ACCOUNT_DESC.ItemID = dbo.XXX_ACCOUNT_ITEM.ItemID

2: Und hier die HauptView welche die Description ziehen sollte:

SELECT dbo.tDataMap.PartitionKey, dbo.tDataMap.DimName, dbo.tDataMap.SrcKey, dbo.tDataMap.SrcDesc, dbo.tDataMap.TargKey,
HFM.dbo.View_Account_Desc.HFM_Description, dbo.tDataMap.WhereClauseType, dbo.tDataMap.WhereClauseValue, dbo.tDataMap.ChangeSign,
dbo.tDataMap.Sequence, dbo.tDataMap.VBScript
FROM dbo.tDataMap INNER JOIN
HFM.dbo.View_Account_Desc ON dbo.tDataMap.TargKey = HFM.dbo.View_Account_Desc.Label

Wie gesagt, in der ersten View, werden nur die Kontenaufgelistest, mir wäre es aber wichtig das in der zweiten View, wenn kein vergleich gefunden wird mit der Join funktion, die Zelle halt einfach leer gelassen wird.

thx
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.394
Wenn ich das richtig verstehe, dann hast du in tDataMap keine ITEM ID stehen und gehst deshalb den Umweg über Target. In diesem Fall müsste dir dashier weiterhelfen:
Code:
SELECT    t.Dimension AS Dimension,
        t.[Source] AS [Source],
        t.SourceDesc AS [Source Desc],
        t.[Target] AS [Target],
        d.[Description] AS [Target Description]
FROM    dbo.tDataMap t,
        dbo.ACCOUNT_ITEM i,
        dbo.ACCOUNT_DESC d
WHERE    t.[Target] IS NOT NULL
AND        t.[Target] = i.Label
AND        i.ItemID = d.ItemID

Voraussetzung ist, das Target immer eindeutig ist, sonst kommen Einträge mehrfach. Und wenn ich dich richtig verstehe, gibt es nicht zu jedem Target auch eine Description, diese Einträge würden nicht angezeigt werden. Man könnte das aber wie folgt ergänzen:
Code:
SELECT    t.Dimension AS Dimension,
        t.[Source] AS [Source],
        t.SourceDesc AS [Source Desc],
        t.[Target] AS [Target],
        d.[Description] AS [Target Description]
FROM    dbo.tDataMap t,
        dbo.ACCOUNT_ITEM i,
        dbo.ACCOUNT_DESC d
WHERE    t.[Target] IS NOT NULL
AND        t.[Target] = i.Label
AND        i.ItemID = d.ItemID
UNION ALL
SELECT    t.Dimension AS Dimension,
        t.[Source] AS [Source],
        t.SourceDesc AS [Source Desc],
        t.[Target] AS [Target],
        '' AS [Target Description]
FROM    dbo.tDataMap t
WHERE    t.[Target] IS NULL
OR        t.[Target] NOT IN (    SELECT    Label
                            FROM    dbo.ACCOUNT_ITEM
                            WHERE    Label IS NOT NULL )
 
Oben