2017-05-12 4 views
-1

Ziel:
Wenn eine Person zwei Süßigkeiten Nummer hat, sollte Nummer 1 immer zuerst angezeigt werden. Keine Notwendigkeit, Süßigkeit Nr. 2 anzuzeigen.
Wenn eine Person Nr. 1 nicht hat, sollte sie Nr. 2 stattdessen anzeigen.Anzeige korrekte Zeile basierend auf Candy Nummer

Display all data 
(int)(int) (nvarchar) (int) 
Id fId  Name  Candy Number 
--------------------------------- 
1 12  Kimn    1 
2 12  Kimn    2 
3 19  Lisa    1 
4 15  John    2 
5 16  Maria    2 
6 16  Maria    1 
7 17  Mao     2 



Requested result: 
Id fId  Name  Candy Number 
--------------------------------- 
1 12  Kimn    1 
3 19  Lisa    1 
4 15  John    2 
6 16  Maria    1 
7 17  Mao     2 

Problem:
Es ist nicht so gut für mich ist es angezeigt werden soll. Versucht mit Groß-/Kleinschreibung und endet in Where-Anweisung, aber der Code passte nicht zum Zweck.

Irgendeine Idee?

select * 
from 
    table 
where 
    candynumber = 
     CASE WHEN b.MatchType = 1 
       THEN 1 
      ELSE 2 
     END 

Vielen Dank!

Antwort

0

Dies kann row_number() Fensterfunktion werden:

select Id, fId, Name, Candy_Number from (
    select your_table.*, row_number() over(partition by fId order by Candy_Number) as rn from your_table 
) t 
where rn = 1 
order by id 

Dies gibt eine Zeile pro fId, mit niedrigeren Candy_Number.

+0

Danke Jungs für Ihre Hilfe! –

+0

Gern geschehen. –

0

Sie können dies versuchen:

SELECT   candyWrapper.ID, 
       candyWrapper.FID, 
       outerHardCandy.Name, 
       outerHardCandy.Number 
FROM   (SELECT  innerSoftCandy.Name, 
          CASE 
           WHEN (SUM(innerSoftCandy.Number) = 3) OR (SUM(innerSoftCandy.Number) = 1) THEN 1 
           WHEN (SUM(innerSoftCandy.Number) = 2) THEN 2 
          END AS Number 
       FROM  Candy innerSoftCandy 
       GROUP BY innerSoftCandy.Name 
       ) outerHardCandy 
INNER JOIN  Candy candyWrapper ON (outerHardCandy.Name = candyWrapper.Name AND outerHardCandy.Number = candyWrapper.Number) 
ORDER BY  candyWrapper.ID 

du hier sehen ->http://rextester.com/BBD89608

Verwandte Themen