【发布时间】:2021-05-26 15:24:08
【问题描述】:
我遇到了一个奇怪的问题:
我有一个结构如下的简单表格:
tbl1
Username | DateOfSell
Jack 2021/04/04
Joe 2021/04/14
Jack 2021/05/20
Joe 2021/04/11
Jack 2021/05/01
另一张包含员工、编号、雇用日期和解雇日期的信息
tbl2
Username | Phone | DateOfStart | DateOfEnd
Jack 02541 2010/01/01 2021/05/21
Joe 08522 2012/06/01 NULL
我需要创建一个查询,仅当员工在某个日期仍在工作时才选择该员工。 例如在这种情况下:
SELECT *
FROM tbl1 JOIN tbl2 (..)
WHERE tbl1.DateOfSell < tbl2.DateOfEnd
没关系,但我需要(出于 SSRS 目的)能够检查多个日期。
如果在 SSRS 中我有一个参数,其中包含实际日期和前一天以及过去一周的日期,我该怎么办?
所以:今天()= 2021/05/26 前一周:2021/05/19
SELECT *
FROM tbl1 JOIN tbl2 (..)
WHERE '2021/05/26' < tbl2.DateOfEnd
我不想要任何结果,因为现在这个员工不再工作了。
SELECT *
FROM tbl1 JOIN tbl2 (..)
WHERE '2021/05/19' < tbl2.DateOfEnd
在这种情况下,我需要结果,因为截至日期,该员工仍在工作。
如果我在参数报告中输入了两个(或更多)值怎么办?
显然我有一个错误An expression of non-boolean type specified in a context where a condition is expected, near ','
有办法解决这个问题吗?
谢谢!
【问题讨论】:
-
"一个包含实际日期和前一天以及过去一周的一天的参数" 我认为一个参数不能有 3 个并发值。请更好地解释这一点。
-
不清楚你想要什么:你想要来自
tbl1的所有行,但前提是它们在DateOfStart和DateOfEnd内,或者不相关并且你只想要来自 @987654330 的行@ 在指定的日期(那么tbl2是如何进来的)?或两者?逻辑不清楚,预期的输出会有所帮助
标签: sql sql-server ssrs-2012