Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Pokaż wszystkie przedmioty, które są wynajmowane przed określoną datą i do określonej daty

Zabiera mnie z powrotem, ale to jest to, co chcesz pokazać WSZYSTKO na wynajem w tym okresie, w tym przedmioty, które nie zostały zwrócone

select *
from MyTable
where on_hire < @EndDate
and (off_hire >= @StartDate or off_hire is null)

W przypadku kontynuacji, łączna liczba dni dla każdego narzędzia

with CTE as
(
    select *
    from MyTable
    where on_hire < @EndDate
    and (off_hire >= @StartDate or off_hire is null)
)
select Tool,
       sum(datediff(dd,
                    case
                      when off_hire > @EndDate then @EndDate
                      when off_hire is null then @EndDate
                      else off_hire
                    end,
                    case
                      when on_hire < @StartDate then @StartDate
                      else on_hire
                    end)) as DaysOnHire
from CTE
froup by Tool


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uruchamianie programu SQL Server 2014 na maszynie wirtualnej platformy Azure

  2. Grupuj kolumny w wiele wierszy i Group_concate jak MySQL w SQL Server

  3. wyrażenie regularne serwera sql

  4. SQL Server:jak zapytać, kiedy wykonano ostatnią kopię zapasową dziennika transakcji?

  5. Czy SELECT COUNT(kolumna) jest szybszy/wolniejszy niż SELECT COUNT(*)?