14 Stimmen

Wie findet man die Zeilennummer eines Datensatzes?

Siehe folgende Beispieltabelle

ProductDetailNo    ProductDescription
      224                Apples
      225                Tomatoes
      226                Potatoes

Wie kann ich die Zeilennummer für eine ausgewählte Zeile wie unten auflisten?

RowNo    ProductDetailNo          Product Description
  2         225                Tomatoes

Mit row_number() in meiner Abfrage nur gibt 1 immer für einen einzelnen Datensatz, egal was die logische Zeile in der Datenbank ist.

Danke, Damien.

22voto

Shoaib Shaikh Punkte 4545

Versuchen Sie dies

WITH MyTable AS
(
    SELECT ProductDetailNo, ProductDescription,
    ROW_NUMBER() OVER ( ORDER BY ProductDetailNo ) AS 'RowNumber'
    FROM Product
) 
SELECT RowNumber, ProductDetailNo     
FROM MyTable 
WHERE ProductDetailNo = 225

3voto

Sergio Tulentsev Punkte 218286

Was ist mit dem hier?

SELECT RowNo, ProductDetailNo, ProductDescription
FROM (SELECT ROW_NUMBER() as RowNo, ProductDetailNo, ProductDescription
      FROM TheTable) as t
WHERE ProductDetailNo = 225;

3voto

Renju Vinod Punkte 254

Bitte überprüfen Sie dies

WITH ArticleSearch AS
    (
        SELECT
            ROW_NUMBER() OVER 
                (
                    ORDER BY tblProducts.ProductDetailNo                                    
                ) AS RowNumber, 
            tblProducts.ProductDetailNo, 
            tblProducts.ProductDescription    
        FROM         
            tblProducts
    )

    SELECT 
        a.RowNumber AS SlNo,
        a.ProductDetailNo,
        a.ProductDescription
    FROM
          ArticleSearch a
    WHERE
          a.ProductDetailNo=225

2voto

Gopu Punkte 55
  WITH productCTE 
  AS
  (SELECT ROW_NUMBER() OVER(ORDER BY ProductDetailNo, ProductDescription) AS RowNo, ProductDetailNo, ProductDescription
   FROM tbl_Products
  )
  SELECT * FROM productCTE
  WHERE RowNo = 2

1voto

Vinayak Garg Punkte 6428

Die Zeilennummer, die Sie erhalten, ergibt sich aus der Anzahl der Zeilen des Ergebnisses, d.h. wenn Ihr Ergebnis nur ein Tupel enthält, ist die Zeilennummer immer 1.

Um die Zeilennummer der gesamten Tabelle zu erhalten, sollten Sie ein zusätzliches Attribut hinzufügen, ein ReiheNo mit automatischem Inkrement zu Ihrer Tabelle.

Ich hoffe, das hilft, aber vielleicht hat SQL eine noch bessere Lösung für Sie!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X