Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Брой за включване на нулеви стойности

Не толкова клаузата WHERE, а GROUP BY. Заявката ще върне данни само за редове, които съществуват. Това означава, че когато групирате по дата на клеймото за време, ще бъдат върнати само дните, за които има редове. SQL Server не може да знае от контекста, че искате да „попълните празните места“, и няма да знае с какво.

Нормалният отговор е CTE, който произвежда всички дни, които искате да видите, като по този начин попълва празните места. Това е малко сложно, защото изисква рекурсивен SQL оператор, но е добре известен трик:

WITH CTE_Dates AS
(
    SELECT @START AS cte_date
    UNION ALL
    SELECT DATEADD(DAY, 1, cte_date)
    FROM CTE_Dates
    WHERE DATEADD(DAY, 1, cte_date) <= @END
)
SELECT
cte_date as TIME_STAMP,
ISNULL(COUNT(HL_Logs.Time_Stamp), 0) AS counted_leads, 
FROM CTE_Dates
LEFT JOIN HL_Logs ON DATEADD(dd, 0, DATEDIFF(dd, 0, Time_Stamp)) = cte_date
WHERE Time_Stamp between @BEGIN and @END and ID_Location = @LOCATION
GROUP BY cte_date

Разграждайки го, CTE използва обединение, което се препраща към себе си, за да добавя рекурсивно един ден към предишната дата и да запомни тази дата като част от таблицата. Ако изпълните прост оператор, който използва CTE и току-що сте избрали * от него, ще видите списък с дати между началото и края. След това изразът присъединява този списък с дати към таблицата на регистрационния файл въз основа на датата на времевия печат на журнала, като същевременно запазва дати, които нямат записи в журнала, използвайки лявото съединение (взема всички редове от "лявата" страна, независимо дали имат съвпадащи редове на " дясна" страна или не). Накрая групираме по дата и вместо това преброяваме и трябва да получим отговора, който искате.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да конвертирате varchar в дата само когато съдържа валидна дата?

  2. 5 начина да получите краткото име на месеца от дата в SQL Server

  3. как да изчислим броя на дните в годината в sql server 2008

  4. Как да видите плана за изпълнение на заявка в Azure Data Studio (SQL Server)

  5. Формат на колоната за дата на Sql сървъра