小编ffu*_*tes的帖子

如何在一个月没有匹配项的查询中获取所有月份?

我需要逐年获取(以填写图表)。然而,我发现第一个月没有任何数据,我想反映这一点。查询是这样的:

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”

为什么左连接不够?

sql-server

3
推荐指数
1
解决办法
2705
查看次数

在此上下文中不能使用带有返回值的 RETURN 语句

我正在使用 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
推荐指数
1
解决办法
2285
查看次数

标签 统计

sql-server ×2