Ich mache nicht viel SQL, und die meiste Zeit mache ich CRUD-Operationen. Gelegentlich werde ich etwas ein bisschen komplizierter. Also, diese Frage kann ein Neuling Frage sein, aber ich bin bereit. Ich versuche schon seit Stunden, das herauszufinden, und es hat nichts gebracht.
Stellen Sie sich also die folgende Tabellenstruktur vor:
> | ID | Col1 | Col2 | Col3 | .. | Col8 |
Ich möchte ID und eine berechnete Spalte auswählen. Die berechnete Spalte hat einen Bereich von 0 - 8 und enthält die Anzahl der Übereinstimmungen mit der Abfrage. Außerdem möchte ich die Ergebnismenge so einschränken, dass sie nur Zeilen enthält, die eine bestimmte Anzahl von Übereinstimmungen aufweisen.
Aus diesen Beispieldaten ergibt sich:
> | 1 | 'a' | 'b' | 1 | 2 |
> | 2 | 'b' | 'c' | 1 | 2 |
> | 3 | 'b' | 'c' | 4 | 5 |
> | 4 | 'x' | 'x' | 9 | 9 |
Ich möchte auf Col1 = 'a' OR Col2 = 'c' OR Col3 = 1 OR Col4 = 5 abfragen, wobei das berechnete Ergebnis > 1 ist und die Ergebnismenge wie folgt aussehen soll:
> | ID | Cal |
> | 1 | 2 |
> | 2 | 2 |
> | 3 | 2 |
Ich verwende T-SQL und SQL Server 2005, falls das wichtig ist, und ich kann das DB-Schema nicht ändern.
Ich würde es auch vorziehen, es als eine in sich geschlossene Abfrage zu behalten und keine gespeicherte Prozedur oder temporäre Tabelle erstellen zu müssen.