C # SQL server VIEW Query

Ich muss eine VIEW-Abfrage erstellen …

Beispielsweise:

Name Count ------------------------------ Kaganoff Benzion 122 Van Gennep 443 Michelen Luis 656 kraig Beno 333 Mogrobejo Endika 555 

* alle Namen in der Spalte "Name" mit zwei Wörtern mit einem Zwischenraum dazwischen.

Jetzt muss ich mit dem ersten Brief des ersten Wortes und dem ersten Brief des zweiten Wortes aufsteigen und von Count absteigen …

Das Ergebnis sollte sein:

 Name Count ------------------------------ kraig Beno 333 Kaganoff Benzion 122 Mogrobejo Endika 555 Michelen Luis 656 Van Gennep 443 

Lets sehen, ob du kannst 🙂

    so etwas wie diese Abfrage sollte funktionieren (ich habe meine eigene Temp-Tabelle mit Ihren data eingerichtet)

     create table #Temp (Name varchar(100), [Count] int) insert into #Temp (Name, [Count]) VALUES ('Kaganoff Benzion', 122) insert into #Temp (Name, [Count]) VALUES ('Van Gennep', 443) insert into #Temp (Name, [Count]) VALUES ('Michelen Luis', 656) insert into #Temp (Name, [Count]) VALUES ('kraig Beno', 333) insert into #Temp (Name, [Count]) VALUES ('Mogrobejo Endika', 555) select SUBSTRING(Name, 1, PATINDEX('% %', Name)) AS FirstName, SUBSTRING(Name, PATINDEX('% %', Name) + 1, LEN(Name) - PATINDEX('% %', Name)) AS SecondName, [Count] from #Temp ORDER BY SUBSTRING(Name, 1, 1), SUBSTRING(Name, PATINDEX('% %', Name) + 1, 1), [Count] DESC drop table #Temp 

    Ich würde das mit einem gemeinsamen Tabellenausdruck machen.

     DECLARE @data TABLE (Name varchar(50), NameCount int); INSERT INTO @data (Name, NameCount) SELECT 'Kaganoff Benzion', 122 UNION SELECT 'Van Gennep', 443 UNION SELECT 'Michelen Luis', 656 UNION SELECT 'kraig Beno', 333 UNION SELECT 'Mogrobejo Endika', 555; --Now that we have the data setup, use a CTE... WITH NamesAndLetters AS ( SELECT SUBSTRING(UPPER(Name), 1, 1) [FirstNameLetter] , SUBSTRING(UPPER(Name), PATINDEX('% %', Name) + 1, 1) [LastNameLetter] , Name , NameCount FROM @data ) SELECT Name, NameCount FROM NamesAndLetters ORDER BY FirstNameLetter ASC , LastNameLetter ASC , NameCount DESC 

    Sorry für den ersten Beitrag … Ich habe nicht gesehen, dass Name eine Spalte auf den ersten war.

    Es sei denn, ich verstehe deine Frage nicht … Es ist völlig möglich, eine einzelne Spalte in der Order By-Klausel aufzuteilen, ohne die Ausgabe zu bewirken.

    Beispiel:

     Select [Name], [Count] from [YourView] Order By Substring([Name], 1, 1) , SUBSTRING([Name], PATINDEX('% %', [Name]) + 1, PATINDEX('% %', [Name]) + 2), [Count] Desc 

    Vielleicht bin ich aber nur verwirrt, willst du den Count oder? Unabhängig davon entspricht die Ausgabe genau der gewünschten Ausgabe.