我需要逐年获取(以填写图表)。然而,我发现第一个月没有任何数据,我想反映这一点。查询是这样的:
SELECT tblMes.id, COUNT(*) AS ingreso
FROM tblTicket
LEFT JOIN tblMes ON MONTH(tblTicket.fechaIngreso) = tblMes.id
WHERE year(fechaIngreso) = 2017
GROUP BY tblMes.id
ORDER BY tblMes.id asc
Run Code Online (Sandbox Code Playgroud)
查询的结果是这样的:
Month | Qty
--------------
"2" | "1066"
"3" | "1395"
"4" | "761"
"5" | "1316"
"6" | "879"
"7" | "1039"
"8" | "1099"
"9" | "577"
"10" | "1064"
"11" | "1268"
"12" | "1188"
Run Code Online (Sandbox Code Playgroud)
第一行应该是“1” | “0”
为什么左连接不够?
我正在使用 MS SQL 并且我正在尝试创建一个函数以供稍后在查询中使用:
CREATE FUNCTION "DiasLaborales"(
"@month" INT,
"@year" INT
)
RETURNS INT
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE @day INT = 1
DECLARE @varfecha DATETIME
DECLARE @diaslaborales INT
SET @diaslaborales = 0
SET @varfecha = CAST(RTRIM(@year * 10000 + @month * 100 + @day) AS DATETIME)
SET @fechafinal = DATEADD(DAY, -(DAY(DATEADD(MONTH, 1, @varfecha))), DATEADD(MONTH, 1, @varfecha))
WHILE ((@fechafinal + 1) > @varfecha)
BEGIN
IF (DATEPART(dw,@varfecha) NOT IN (6,7))
BEGIN
SET @diaslaborales …Run Code Online (Sandbox Code Playgroud) sql-server ×2