【发布时间】:2018-03-20 12:39:32
【问题描述】:
我需要创建一个回答以下问题的查询:
我想返回阅读日期为 26 天的注册数量,阅读日期为 27 天的条目数,最多为 31 天,过去 6 个月。我需要你保持这样的状态:
我的预期输出是这样的:
LOCALE COMPETENCE Reading_date(DAYS) INSCRIPTION (Quantity)
------ ---- ---------- ---------
CEARA JAN18 26 20
CEARA JAN18 27 02
CEARA JAN18 28 34
CEARA JAN18 29 07
CEARA JAN18 30 12
CEARA JAN18 31 11
CEARA FEV18 26 21
CEARA FEV18 27 09
(然后走……)
但我的桌子是这样的:
INSCRIP COMPETENCE Reading_date
00183938 201801 2018-01-02
00183938 201802 2018-02-01
00183946 201709 2017-09-01
00183946 201710 2017-10-01
00183946 201711 2017-11-01
我正在尝试的 sql 是这样的(请抽象连接):
select top 10 LOCALE
, COMPETENCE
, lead(Reading_date, 1) over (PARTITION by Reading_date ORDER BY Reading_date) next_lecture
, datediff(day, Reading_date, next_lecture) Reading_date
, INSCRIPTION
from BASE o
join LOCALE l
on u.localidade = l.cod_localidade
group by LOCALE, COMPETENCE, Reading_date, INSCRIPTION
有人帮帮我吗?感谢和抱歉英语不好
【问题讨论】:
-
我不了解源数据和期望的结果。你能解决这个问题吗?并解释您如何计算阅读天数,因为它似乎不仅仅基于一行中的阅读日期。
-
为了计算我使用 datediff,但问题出在这里 =/
-
我相信问题出在这里:
datediff(day, Reading_date, **next_lecture**)(星号之间的部分)。您正在尝试通过别名引用SELECT中的另一个字段;你不能那样做。您必须提供完整的表达式。当您收到错误并发布问题时,请始终在您的帖子中提供错误;否则,您最终只会遇到试图帮助您不理解的人,或者不得不玩“猜谜游戏”(就像我在这里所做的那样)。 -
很抱歉,错误是:Mensagem 207, Nível 16, Estado 1, Linha 27 Nome de coluna 'next_lecture' inválido。
-
如果 next_lecture 列不包含在聚合函数或 group by 子句中,则不能使用它
标签: sql sql-server lag lead