Ich bin völlig neu in SQL. Während des Studiums hatte ich das unten gezeigte Problem gefunden.In() Operator funktioniert nicht
Wenn ich Abfrage ausführen bekomme ich als 125,130,131
ausgegeben. Ich speichere diese Ausgabe in @issueid
Variable.
declare @issueid varchar(100)
set @issueid = (
SELECT STUFF(
(
SELECT ','+convert(varchar,ism_id)
FROM table where ism_group_name='TEST_COPY'
FOR XML PATH('')
) ,1,1,''))
Aber wenn ich @issueid
Variable in folgenden Abfrage bekomme ich seltsame Verhalten:
- Wenn ich
@issueid='125'
passiere ich die Ergebnisse erhalten - Wenn ich
@issueid='125,130,131'
geben es keine Ausgabe zeigt.
Meine Frage:
SELECT *
FROM
ISSUE_MASTER (NOLOCK),
ORDER_ENTRY_PPDI (NOLOCK)
WHERE ISM_ID= OE_ISSUE_ID
and ism_id=oe_issue_id
and convert(varchar,oe_issue_id) in (@issueid)
AND ISM_STATUS = 0
GROUP BY ISM_ISSUER_NAME,ISM_ISSUE_NAME,OE_ISSUE_ID
Bitte um Hilfe! Was mache ich falsch?
Warum Concat Integer-Werte als String, wenn Sie es schließlich für Integer-Datentyp verwenden möchten? Verwenden Sie stattdessen die Tabellenvariable, um die Problem-ID zu erfassen, und verwenden Sie sie dann in Ihrer zweiten Abfrage. –
Wird Ihre Variable '@ issueid' an einer anderen Stelle als der von Ihnen angegebenen verwendet? Wenn nicht, würde ich die Werte überhaupt nicht in einer Variablen speichern, sondern mich direkt mit Ihrer Tabelle "Tabelle" verbinden. – Aquillo