【发布时间】:2021-06-29 23:54:10
【问题描述】:
我正在尝试计算两个日期(日历表)和工作日(agenda_user 表)之间每个用户的报告数量(report_user 表) )。
这是我的表格的图表:
日历表:
DATE Year Month
---------------------------------
2020-01-01 2020 1
2020-01-02 2020 1
2020-01-03 2020 1
2020-01-04 2020 1
AGENDA_USER 表:
ID_USER DATE Value
---------------------------------
1 2020-01-01 1
2 2020-01-01 1
1 2020-01-02 0
2 2020-01-02 1
用户表:
ID_USER Name
-------------------------
1 Jack
2 Robert
Report_Result 表:
ID_USER Date Result
-----------------------------------
1 2020-01-01 good
1 2020-01-01 good
2 2020-01-01 bad
2 2020-01-01 good
2 2020-01-02 good
2 2020-01-02 good
我正在尝试使用 SQL 查询查找结果
ID_USER Date Number of report Day work report/work
---------------------------------------------------------------------------
1 2020-01-01 2 1 2/1 = 2
2 2020-01-01 2 1 1
1 2020-01-02 0 0 0
2 2020-01-02 2 1 2
SELECT
REPORT_USER.ID_USER,
COUNT(ID_USER) AS result
FROM [DB].[dbo].REPORT_USER AS report,
JOIN [DB].[dbo].[USER] AS [USER]
ON [USER].ID_USER = report.ID_USER
JOIN [DB].[dbo].AGENDA_USER AS agenda
ON agenda.ID_USER = report.ID_USER
WHERE CAST(agenda.[Date] AS DATE) >= '2020-09-01'
AND CAST(agenda.[Date] AS DATE) <= '2021-07-28'
AND [USER].ID_user = 1167
GROUP BY
report.ID_VENDEUR;
【问题讨论】:
-
到目前为止您尝试过什么?为什么它不起作用?实现预期结果的逻辑是什么?你在这里有什么问题?您的“问题”中没有明确的问题或问题陈述(关于您未共享的代码)。 Stack Overflow 不是免费的编码服务;不要把它当作一个。
-
仅供参考,是的
CAST({ColumnName} AS date)是 SARGable,但它isn't a good idea。使用>=和<logic。 -
把你的目标分解成碎片。 “报告数量”是什么意思?它是给定时间段/用户的 report_user 中所有行的总数吗?结果列中的值会影响计数吗?编写正确执行此操作的查询。然后重复“日常工作” - 公式是什么?你需要什么逻辑来计算。我认为您需要以某种方式外部加入,但不太了解您的目标。
-
@Larnu 我遇到的问题是我无法将agenda_user 表中的日期与report_result 表中的日期联系起来
-
为什么不呢?加入
date列有什么问题?
标签: sql sql-server database powerbi