Einen einzelnen Wert aus mehreren Werten in einem SELECT anzeigen

Zuerst, tut mir leid für den Titel Gore, ich konnte keinen guten Titel für meine Frage finden. Wie auch immer, ich habe einen Tisch, der so aussieht

email | lang ---------------- d@dc | 1 d@dc | 2 a@dc | 2 a@dc | 2 z@dc | 1 

Ich möchte das gerne zurückgeben

  email | lang ---------------- d@dc | 3 a@dc | 2 z@dc | 1 
  • Wenn eine E-Mail mehrfach erscheint, muss sie nur einmal in den Ergebnissen erscheinen
  • Wenn eine E-Mail mehrfach erscheint und eine einzelne Sprache hat,
  • Wenn eine E-Mail mehrfach erscheint und mehrfach lang ist, Anzeige 3
  • Wenn eine E-Mail einmal erscheint, zeigen Sie sie an

Dies ist, was ich versucht habe, aber es funktioniert nicht, wenn man sich nicht so anrufen kann

 SELECT email, CASE COUNT(lang) WHEN 1 THEN lang ELSE '3' END FROM table GROUP BY email 

Irgendwelche Ideen, wie ich das erreichen könnte? Vielen Dank

Dieser Code wird dir bestimmt helfen. benutze deinen Tabellennamen anstelle von #tempP

 select distinct email, (CASE WHEN (count(lang)>1) THEN lang ELSE (select SUM(lang) from #tempP where email=T.email) END) lang from #tempP T group by email,lang