我有三列:机组人员信息,培训信息,职位信息。我正在尝试创建一个报告,以显示每位机组人员接受的某些培训的最新日期。每次培训都应该有自己的专栏,但仅某些职位需要进行某些培训。
我尝试了一个case语句语句以及仅在where语句中进行过滤,但一直出错。某些研究确实说t SQL没有if语句,但是有些人说有。
这是有效的访问代码:压载水管理:
['item22', 'item23', 'item03', 'item4', 'item5']
我想要显示的是机组人员完成培训的最新日期(如果需要),如果不需要,则显示空白,如果不需要,则显示0。
>答案 0 :(得分:1)
好的,您遇到的问题之一就是您实际上要返回三种数据类型:
因此,您需要某种方式来处理这三个问题。我以为你会想要:
所以您的查询变为:
SELECT
MAX(
CASE
WHEN [CURRENT_FLAG] = 1
AND [QUALIFICATION_ID] = 14800000086
AND [CMC_POS_CODE_TRANSLATOR] IN (1,3,6,8,12,13,15,18,20,25,32,90,91,92,94,96,98,100,102,103,230)
THEN CONVERT(VARCHAR(8), [ISSUED_ON], 112)
ELSE
CASE
WHEN [CMC_POS_CODE_TRANSLATOR] NOT IN (1,3,6,8,12,13,15,18,20,25,32,90,91,92,94,96,98,100,102,103,230)
THEN ''
ELSE '0'
END
END)
FROM
MY_TABLE;
如果这不起作用,那么可能会帮助我们向您展示您尝试了什么以及您遇到的实际错误?
此外,TSQL确实确实允许使用IF
语句,但不允许在SELECT
查询中使用。因此,您可以这样做:
IF @my_dog_has_no_nose = 1
BEGIN
SELECT 'how does he smell?' AS question;
ELSE
SELECT NULL AS question;
END;
但是在SELECT
语句中,您将必须使用CASE
来允许重定向。