Ich versuche, das Problem mit SQL-Abfrage zu lösen, wo ich nächste Spalten habe: ITEM NUMBER und CROSS_REFFERENCE. ITEM NUMBER kann mehrere Werte von CROSS_REFFERENCE haben, und was ich brauche, ist sie zu zählen, was ich tun kann, indem ich nach gruppieren und nach Ausdruck zähle. Aber eine andere Sache, die ich brauche, ist eine Aussage, die besagt, dass, wenn die ITEM NUMMER mehr als eine CROSS_REFFERENCE als MULTI zurückgibt, andernfalls der Einzelwert von CROSS_REFFERENCE zurückgegeben wird, der an ITEM NUMBER gebunden ist. Ich habe versucht, diesen Ausdruck als neue coulmn usex:SQL-Aggregat-Ergebnisse als Bedingung in SELECT-Klausel verwenden
MFG: IIf(Count([CROSS_REFERENCE])>1,"MULTI",[CROSS_REFERENCE])
Aber wenn meine Ergebnisse kehrt ich nicht für CROSS_REFERENCE eindeutige Liste von ITEM NUMBER mit Ether MULTI oder Wert.
Irgendeine Idee was mache ich falsch?
SELECT
tbl_MFG_XREF.[ITEM NUMBER],
tbl_MFG_XREF.CROSS_REFERENCE,
Count(tbl_MFG_XREF.CROSS_REFERENCE) AS CountOfCROSS_REFERENCE,
IIf(Count([CROSS_REFERENCE])>1,"MULTI",[CROSS_REFERENCE]) AS MFG
FROM
tbl_MFG_XREF
GROUP BY
tbl_MFG_XREF.[ITEM NUMBER], tbl_MFG_XREF.CROSS_REFERENCE;
wird nie so passieren. 'count()' ist eine Aggregatfunktion, deren Ergebnisse auf Zeilenebene nicht verfügbar sind. count() hat nur einen verwendbaren Wert, wenn ALLE Zeilen verarbeitet/berücksichtigt wurden. Sie können count() nicht zum Filtern auf Zeilenebene verwenden, da die Ergebnisse erst viel später zur Verfügung stehen - SQL Server können keine Zeitreisen durchführen. –
Wenn Sie CROSS_REFERENCE zählen möchten, müssen Sie außerdem 'tbl_MFG_XREF.CROSS_REFERENCE' aus den SELECT- und den GROUP BY-Klauseln entfernen. – Andre