Zapytanie SQL łączące dane - MSSQL

0

Posiadam dwie tabele:

  • Raport

  • Ilosc_rachunku

W tabeli Rapot znajdują się kolumny: id, dataspr, rap_komentarz.

W Tabeli Ilosc_rachunku znajdują się kolumny: InneId, data, rachunek.

Muszę wyświetlić ilość rachunków dla każdego dnia z tabeli Ilosc_rachunku do tabeli Raport.

Tzn:

 
Select DISTINCT Convert(DATE,Rapot.dataspr) AS Data, COUNT(Ilosc_rachunku.InneId) as ilosc rachunków
from Rapot  INNER JOIN Ilosc_rachunku ON Convert(DATE,Rapot.dataspr)= Convert(DATE,Ilosc_rachunku.data)
AND Rapot.dataspr BETWEEN '2016-05-05 00:00:00' AND '2016-05-11 23:59:59'
GROUP BY Rapot.dataspr;

Niestety otrzymuję złe dane:

f3a9adec56.png

Proszę o pomoc!

1

Brak aliasów, zachowuj konwencję, RLY łączysz dwie tabele po dacie? To nie ma prawa działać, złącz po PK i FK z tych tabel.

1
kate87 napisał(a):

Brak aliasów, zachowuj konwencję,

Przecież zachowuje konwencje, nie używając aliasów. Używa nazwa_tebeli.pole, a zresztą to bez znaczenia dla pytania.

kate87 napisał(a):

RLY łączysz dwie tabele po dacie?

A jak inaczej ma to zrobić, skoro ma wykonać zestawienie na dwóch zbiorach danych, które nie są połączone przez PK/FK tylko logicznie przez datę?

kate87 napisał(a):

To nie ma prawa działać, złącz po PK i FK z tych tabel.

Zawsze odpowiadasz z czapy czy tylko dziś?

1

Zwróć uwagę na mój komentarz i typy danych - to ważne.
Powinno zadziałać coś takiego, ale jest to baaaardzo daleko od rozwiązania wydajnego ;-)

SELECT CONVERT(DATE, Rapot.dataspr) AS DATA,
       COUNT(Ilosc_rachunku.InneId) AS [ilosc rachunków]
FROM Rapot
  INNER JOIN Ilosc_rachunku ON CONVERT(DATE, Rapot.dataspr) = CONVERT(DATE, Ilosc_rachunku.DATA)
where CONVERT(DATE, Rapot.dataspr) BETWEEN '2016-05-05' AND '2016-05-11'	
GROUP BY CONVERT(DATE, Rapot.dataspr)

1 użytkowników online, w tym zalogowanych: 0, gości: 1