2012-04-04 11 views
1

Ich habe eine Abfrage, die Daten mit Gruppentyp und einige Details wie folgt zurück:hinzufügen Zeilennummer äußeren Gruppe in T-SQL oder ssrs

Category | Title 
================== 
cat1 --- titlex 
cat1 --- titley 
cat2 --- titley 
cat3 --- titlez 
cat3 --- titlex 
cat4 --- titlex 

Ich möchte eine Tabelle anzuzeigen, die Zeilennummer auf der Außen hat Gruppe (Kategorie) wie folgt aus:

RN | Category | Title 
====================== 
1 cat1 
       titlex 
       titley 
2 cat2 
       titley 
3 cat3 
       titlez 
       titlex 
4 cat4 
       titlex 

Das Problem ist, wenn ich RN Spalte als ROW_NUMBER in sQL-Abfrage oder ROWNUMBER SSRS-Funktion (versucht NICHTS, Gruppe und dem als Rahmen, nur für den Fall), füge ich immer erhalten Sie Zahlen wie 2 1 2 oder 1 3 4 6 für RN-Spalte.

EDIT SQL-Abfrage (Tabellennamen und Eigenschaften verändert der Einfachheit halber)

SELECT  
     -- this rownumber does not work, counts every occurrence of category  
    --ROW_NUMBER() OVER (
     --PARTITION BY c.Name -- tried this too, this resets on each cat 
     --ORDER BY c.Name) AS RN, 
    c.Name, 
    p.Name 
FROM 
    Products p INNER JOIN 
    Categories c ON p.CategoryId = c.Id 
GROUP BY c.Name, p.Name 
ORDER BY c.Name, p.Name 
+1

können Sie Ihre SQL-Abfrage-Code posten? –

Antwort

3

Sie wollen nicht die Zeilennummern (wie Sie beobachtet haben, werden die Zeilennummern zu jeder zugewiesen .. . ähm ... Reihe).

Vielleicht möchten Sie DENSE_RANK?

SELECT  
    DENSE_RANK() OVER (ORDER BY c.Name) AS RN, 
    c.Name, 
    p.Name 
FROM 
    Products p INNER JOIN 
    Categories c ON p.CategoryId = c.Id 
GROUP BY c.Name, p.Name 
ORDER BY c.Name, p.Name 

In Bezug auf die gewünschte Ausgabe, würde ich versuchen, nicht, dass SQL in zu erreichen - ein Reporting/Formatierungstool verwenden, um das endgültige Layout zu erhalten.

+0

Ja, das ist die Antwort auf meine Frage, das Ausgabeformat ist schon da, mir fehlt nur der Wert für diese Spalte. –

2

Sie können dies auch bei der Präsentationsschicht in SSRS erreichen:

=RunningValue(Fields!CategoryFieldName.Value, CountDistinct, Nothing)