Verwendung So, hier ist meine AbfrageSELECT-Ergebnisses in einer anderen SELECT
SELECT
*
FROM
Score AS NewScores
WHERE
InsertedDate >= DATEADD(mm, -3, GETDATE());
SELECT
ROW_NUMBER() OVER(ORDER BY NETT) AS Rank,
Name,
FlagImg,
Nett,
Rounds
FROM (
SELECT
Members.FirstName + ' ' + Members.LastName AS Name,
CASE
WHEN MenuCountry.ImgURL IS NULL THEN
'~/images/flags/ismygolf.png'
ELSE
MenuCountry.ImgURL
END AS FlagImg,
AVG(CAST(NewScores.NetScore AS DECIMAL(18, 4))) AS Nett,
COUNT(Score.ScoreID) AS Rounds
FROM
Members
INNER JOIN
Score
ON Members.MemberID = Score.MemberID
LEFT OUTER JOIN MenuCountry
ON Members.Country = MenuCountry.ID
WHERE
Members.Status = 1
GROUP BY
Members.FirstName + ' ' + Members.LastName,
MenuCountry.ImgURL
) AS Dertbl
ORDER BY;
Die Abfrage ist ein Ergebnis für eine Gridview-basierte Rangliste gesetzt zu geben und was ich will, ist nur auf den Durchschnitt der Noten zu erhalten, die weniger als 3 Monate alt. Ich habe dies in 2 Teilen, wie Sie sehen können und offensichtlich gibt es einen Fehler wie folgt.
Msg 4104, Ebene 16, Status 1, Zeile 2
Der mehrteilige Bezeichner "
NewScores.NetScore
" nicht gebunden werden konnte.
, die wegen dieser AVG(CAST(NewScores.NetScore AS DECIMAL(18, 4))) AS Nett
ist Wie kann ich es so machen, dass ich NewScores
es verwenden kann, so bin ich nur den Durchschnitt der Noten immer weniger als 3 Monate alt?
EDIT: die Antworten Mit Menschen zur Verfügung gestellt ich es gelöst habe durch eine an der richtigen Stelle kommen mit und hier ist die richtige Abfrage:
SELECT ROW_NUMBER() OVER(ORDER BY NETT) AS Rank, Name, FlagImg, Nett, Rounds FROM (SELECT Members.FirstName + ' ' + Members.LastName AS Name, CASE WHEN MenuCountry.ImgURL IS NULL THEN '~/images/flags/ismygolf.png' ELSE MenuCountry.ImgURL END AS FlagImg, AVG(CAST(NewScores.NetScore AS DECIMAL(18, 4))) AS Nett, COUNT(NewScores.ScoreID) AS Rounds FROM Members INNER JOIN (SELECT * FROM Score WHERE InsertedDate >= DATEADD(mm, -5, GETDATE())) NewScores ON Members.MemberID = NewScores.MemberID LEFT OUTER JOIN MenuCountry ON Members.Country = MenuCountry.ID WHERE Members.Status = 1 GROUP BY Members.FirstName + ' ' + Members.LastName, MenuCountry.ImgURL) AS Dertbl ORDER BY Nett ASC
Ich kann dasselbe erreichen, indem ich die WHERE-Klausel am Ende mit der Datumsbedingung hinzufüge, aber ich würde auch gerne wissen, wie man das mit dem ausgewählten Alias macht. – Pandepic
Sie haben der Tabelle 'NewScores' nicht beigetreten, deshalb kann die Spalte' NetScore' nicht gefunden werden. –
Ja, ich wusste diesen Teil, ich versuche herauszufinden, wie genau ich in dieser Abfrage mitmachen muss, damit es so funktioniert, wie ich es möchte, die Joins, die ich bisher versucht habe, sind fehlgeschlagen. – Pandepic