sql-server - SQL Server:仅显示满足条件的值
问题描述
我试图弄清楚如何修改我的查询以仅显示满足条件的值。
我的查询:
SELECT
name = r.RscMaster_Name_Ch
,Start_date = a.assign_from_da
,End_date = a.Assign_Thru_Da
FROM DW_WFTS.dbo.Assign_Tbl a
LEFT JOIN DW_WFTS.dbo.Resource_Master_Tbl r ON r.RscMaster_No_In = a.RscMaster_No_In
WHERE
(
a.Assign_Thru_Da >= GETDATE()
OR a.Assign_Thru_Da IS NULL
OR
(
a.Assign_From_Da >= GETDATE()
AND a.Assign_Thru_Da >= GETDATE()
)
OR
(
a.Assign_From_Da <= GETDATE()
AND a.Assign_Thru_Da <= GETDATE()
)
)
AND
(
(
a.Assign_From_Da LIKE '0%'
OR a.Assign_From_Da LIKE '00%'
OR a.Assign_From_Da LIKE '000%'
)
OR
(
a.Assign_Thru_Da LIKE '0%'
OR a.Assign_Thru_Da LIKE '00%'
OR a.Assign_Thru_Da LIKE '000%'
)
);
因此,如果有一个或多个用户的日期格式错误——任何输入为“0YYY”或“00YY”或“000Y”的年份——我希望查询显示名称和仅显示错误的日期,例如。
name Start_date end_date
John 0019-12-01
Jane 0020-01-05
Mike 0019-01-05 0019-12-01
我不确定如何从选择中省略正确的日期。请帮忙。
解决方案
如果你关心的只是当年的前导零
“任何输入为 '0YYY' 或 '00YY' 或 '000Y' 的年份”
并且它们是 type DATE
,那么这将使您到达那里:
SELECT
name = r.RscMaster_Name_Ch
,Start_date = a.assign_from_da
,End_date = a.Assign_Thru_Da
FROM DW_WFTS.dbo.Assign_Tbl a
LEFT JOIN DW_WFTS.dbo.Resource_Master_Tbl r ON r.RscMaster_No_In = a.RscMaster_No_In
where
a.assign_from_da < '1000-01-01'
or a.Assign_Thru_Da < '1000-01-01'
如果您有更多的日期规则,那么可以扩展 where 子句
推荐阅读
- c - 检查某个索引处的数组是否在 C 中具有未初始化的值
- python - 是否有 Python 模块或内置函数可以帮助我编写这个程序?
- asp.net-mvc - 从数据库中获取数据并通过 ASP.Net MVC 和实体框架中的可空字符串对其进行过滤
- flutter - Flutter 与内存变化的交互
- ruby - 构造未定义的局部变量。在哪里定义?
- r - gcp 实例上的开源闪亮服务器无法连接到云 sql
- python - 如何在 Python 中编写一个函数来调用另一个函数,同时只为某些参数赋值?
- django - 为什么 nginx 显示 servererror(500) 并且在日志文件中显示 failed (98: Address already in use)
- java - GLSL 错误意外 $end at token "
"和格式问题 - django - 我们可以在 django 中为三种不同类型的用户进行三种不同的身份验证,并且所有三种用户都会以不同的方式登录