Благодарим вас за интерес. я в одной таблице некоторые вещи, как этотобъединение двух таблиц по значению одного столбца и вычисление
sifrez | sifKorisnikPK | Status
1 | 1 | 'P'
2 | 1 | 'P'
3 | 1 | 'U'
4 | 2 | 'P'
5 | 2 | 'P'
6 | 2 | 'U'
7 | 2 | 'U'
8 | 3 | 'U'
9 | 3 | 'U'
10 | 3 | 'U'
11 | 3 | 'U'
12 | 4 | 'P'
13 | 4 | 'P'
Затем я создал хранимую функцию, которая сосчитать значения P и коэффициента поиска U между ними найти пользователя с этим идентификатором и вернуть имя пользователя
CREATE PROCEDURE sp_getBestUsernames
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT SifKorisnikPK, COUNT (Status) AS BrojLosih
INTO #LosaRez
FROM Rezervacija
WHERE Status = 'P'
GROUP BY SifKorisnikPK
order by count(*) desc
После этого part it give me
sifKorisnikPK | BrojLosih
1 | 2
2 | 2
4 | 2
Это только число p для статуса. И это:
SELECT SifKorisnikPK, COUNT (Status) AS BrojDobrih
INTO #DobraRez
FROM Rezervacija
WHERE Status = 'U'
GROUP BY SifKorisnikPK
order by count(*) desc
я получить
sifKorisnikPK | BrojDobrih
1 | 1
2 | 2
3 | 4
только подсчитывать U. Эта часть работы как шарм ... И вот я пытаюсь соединить эти две временные таблицы и вычислить отношение и вернуться SifKorisnik с лучшим соотношением
SELECT Username FROM Korisnik
WHERE SifKorisnik = (SELECT TOP 1 a.SifKorisnikPK
FROM #DobraRez a
INNER JOIN #LosaRez b
ON a.SifKorisnikPK = b.SifKorisnikPK OR
a.SifKorisnikPK != b.SifKorisnikPK
WHERE a.BrojDobrih - b.BrojLosih > 0
ORDER BY a.BrojDobrih - b.BrojLosih)
END
И после присоединения к операции я ожидаю, чтобы получить некоторые вещи, как это, что я не получаю
sifKorisnikPK | BrojDobrih | BrojLosih 1 | 1 | 2 2 | 2 | 2 3 | 4 | 0 4 | 0 | 2
поэтому я могу рассчитать коэффициент BrojDobrih - BrojLosih и вернуть SifKorisnikPK, который является наилучшим соотношением. В этом случае это был бы SifKorisnik 3. Но моя процедура получила SifKorisnik 2, что является вторым лучшим. Я предполагаю, что проблема заключается в объединении операции, что она не вводит 0. Так как я могу это решить?
@NepaliRookie SQL Server 2014 – DarkTemplar