Ich versuche derzeit, die aktuelle Stichwortsuche zu überarbeiten, die ich in die Scripting-Software, die wir verwenden (die alte war sehr einfach und umständlich) zu etwas mehr verfeinert. Es gibt Beschränkungen für die Software, die wir verwenden, und die IT ist gebunden, so dass ich nicht die Möglichkeit habe, eine Funktion oder eine gespeicherte Prozedur zu erstellen, von der ich denke, dass sie die ideale Lösung wäre.Verwenden eines Falles, um numerische Werte zuzuweisen und durch den höchsten Wert
Die Situation ist, dass der Endbenutzer möglicherweise ein generisches Skript verwendet, wenn sie ein bestimmtes Skript für ihr Problem verwenden sollten, also möchte ich SQL erstellen, die erkennt, ob sie mit einem anderen Skript gegangen sein sollten Schlagwortsuche.
Ich habe eine Liste von Wörtern mit jedem Skript zugeordnet Ich fühle mich sollten sie beispielsweise Verwendung:
Reparatur Skript Schlüsselwörter: Reparatur, gebrochen, jagen
Immobilien Skript Schlüsselwörter: schmutzig, Reinigung , Garten
Was ich tun möchte, ist, etwas SQL zu machen, das jedem Exemplar dieser Wörter innerhalb der Datenbank '{Script.Details}}' einen numerischen Wert von 1 zuweist und dann herausfindet, welcher Satz von Schlüsselwörtern das hat höchste Tally am Ende.
Das ist, was ich bis jetzt müde habe, ich weiß, dass es wegen der Syntax wahrscheinlich nicht funktioniert. Leider ist die Software, die wir benutzen, ziemlich vage, wenn man Fehlermeldungen gibt, so dass es nicht viel hilft. Wir verwenden Aliase von V und D. D ist die Benutzeranzeige, also was sie physikalisch sehen, V ist der Wert, den das System liest und der Benutzer nicht sieht. Die Datenbox, in der sich die gesuchte Zeichenfolge befindet, lautet '{Script.Details01}'. Da diese Informationen virtuell in der Software gespeichert sind, müssen wir nicht das FROM-Feld verwenden, wie wir es normalerweise tun würden, wenn wir auf diesen Ort verweisen.
SELECT 'GO TO DIFFERENT SCRIPT' D, 'GO TO DIFFERENT SCRIPT' V,
CASE WHEN EXISTS(SELECT '{Script.Details01}' WHERE '{Script.Details01}' like '%repair%') THEN 1 ELSE 0 END +
CASE WHEN EXISTS(SELECT '{Script.Details01}' WHERE '{Script.Details01}' like '%broken%') THEN 1 ELSE 0 END +
CASE WHEN EXISTS(SELECT '{Script.Details01}' WHERE '{Script.Details01}' like '%chasing%') THEN 1 ELSE 0 END AS REP
CASE WHEN EXISTS(SELECT '{Script.Details01}' WHERE '{Script.Details01}' like '%dirty%') THEN 1 ELSE 0 END +
CASE WHEN EXISTS(SELECT '{Script.Details01}' WHERE '{Script.Details01}' like '%cleaning%') THEN 1 ELSE 0 END +
CASE WHEN EXISTS(SELECT '{Script.Details01}' WHERE '{Script.Details01}' like '%garden%') THEN 1 ELSE 0 END AS EST
WHERE REP = (SELECT MAX(REP)) AND REP <> 0 AND > EST
OR EST = (SELECT MAX(EST)) AND EST <> 0 AND > REP
Wesentlichen, was ich für den Code bin auf der Suche zu tun ist, um mir zu sagen, ob es eine höhere tally für REP ist (Reparatur) und EST (estate) oder, wenn es keine Werte eingetragen gegen entweder sind. Entschuldigung, wenn ich das nicht gut erklärt habe, gibt es ein paar Einschränkungen innerhalb der Software, die wir verwenden, und versuche es so gut wie möglich zu erklären. Irgendwelche Ideen würden sehr geschätzt werden.
vergessen zu erwähnen, Informationen in diesem Details01 databox eine Zeichenfolge sein könnte wie: „Anrufer wollen, über die Reparatur beschweren sie für Tage haben zu jagen, als ihre Kessel ist kaputt". Ich möchte, dass dies als "Needing" durchgeht, um zum Reparaturskript zu gehen. –
Bitte fügen Sie passende Tags für DBRMS und Version hinzu. – user1429080
Entschuldigung, die Software, die wir verwenden, heißt Keyfax, aber es ist keine allgemein verwendete Software, aber es referenziert SQL Server 2012, ich habe die Tags jetzt entsprechend aktualisiert –