Frage

Mit der folgenden Abfrage:

    SELECT pe.prodtree_element_name_l, MAX(rs.resource_value) AS resource_value
    FROM prodtree_element pe
    LEFT JOIN resource_shortstrings rs
        ON pe.prodtree_element_name_l_rk = rs.resource_key
    WHERE rs.language_id = '5'
        AND pe.prodtree_element_name_l <> ''
    GROUP BY prodtree_element_name_l

Ich versuche, herauszufinden, wie man einen der „resource_value“ greifen. Das Problem ist, dass, während dies für eine Reihe von anderen Abfragen arbeitet, ich eine bestimmte Tabelle, die ntext-Datentypen anstelle von Varchars verwendet (die die MAX-Funktion nicht nutzen können). Also im Grunde ist MAX hier nicht arbeiten. Gibt es einen Ersatz ich auf MS SQL Server 2005 verwenden kann?

Ich brauche die prodtree_element_name_l Spalte gruppiert, aber ich brauche nur einen Wert aus der resource_value Spalte, und ist mir egal, was es ist, wie die meisten von ihnen identisch sind, unabhängig (obwohl einige nicht sind, daher kann ich nicht Gruppe, man als gut).

UPDATE:

Whoops, ich war falsch, ist prodtree_element_name_l auch eine NTEXT. Das könnte ein wenig helfen: p

War es hilfreich?

Lösung

Dies wird den ersten Zufall Eintrag bekommt

SELECT DISTINCT 
     pe.prodtree_element_name_l, 
    (SELECT TOP 1 rs2.resource_value
    FROM resource_shortstrings rs2
    WHERE rs2.language_id = '5'
      AND rs2.resource_key = pe.prodtree_element_name_l_rk) AS "resource_value"
FROM prodtree_element pe
LEFT JOIN resource_shortstrings rs
    ON pe.prodtree_element_name_l_rk = rs.resource_key
WHERE rs.language_id = '5'
    AND pe.prodtree_element_name_l IS NOT NULL
--GROUP BY prodtree_element_name_l

Hinweis

In Ihrer Anfrage aare Verwenden Sie ein LEFT JOIN, sondern auch einen Filter auf der linken Seite verknüpften Tabelle, also die Datensatzgruppe zu begrenzen. Ich verließ das an Ort und Stelle, wie ich dachte, es wäre Ihre Ergebnisse ändern ... aber es wird die LEFT JOIN nicht darauf zu tun.

Bearbeiten

Basierend auf dem Feedback in den Kommentaren, ich kommentierte die Gruppe heraus durch und wechselte zu einem deutlichen

Andere Tipps

  SELECT pe.prodtree_element_name_l, MAX(CAST(rs.resource_value AS NVARCHAR(MAX))) AS resource_value
    FROM prodtree_element pe
    LEFT JOIN resource_shortstrings rs
        ON pe.prodtree_element_name_l_rk = rs.resource_key
    WHERE rs.language_id = '5'
        AND pe.prodtree_element_name_l <> ''
    GROUP BY prodtree_element_name_l

Ich habe den Fehler:

The data types ntext and varchar are incompatible in the not equal to operator.

Wenn ich etwas verpasst?

Edit:. PRÜFEN TOP

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top