Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL server-联合转换错误_Sql_Sql Server - Fatal编程技术网

SQL server-联合转换错误

SQL server-联合转换错误,sql,sql-server,Sql,Sql Server,我有这个查询,我想得到这两个查询的结果。请注意,machine\u output是我创建的一个视图: SELECT DISTINCT tblcertified.employeenumber, tblcertified.machinenumber FROM tblcertified INNER JOIN machine_output ON tblcertified.machinenumber = machine

我有这个查询,我想得到这两个查询的结果。请注意,
machine\u output
是我创建的一个视图:

SELECT DISTINCT tblcertified.employeenumber, 
                tblcertified.machinenumber 
FROM   tblcertified 
       INNER JOIN machine_output 
               ON tblcertified.machinenumber = machine_output.machinenumber 
UNION 
SELECT CONVERT (DATE, tblperiod.fromdate) AS fDate, 
       tblscheduled.employeenumber 
FROM   tblperiod 
       INNER JOIN tblscheduled 
               ON tblperiod.number = tblscheduled.number 
WHERE  tblperiod.fromdate BETWEEN Dateadd(m, -3, Getdate()) AND Getdate() 
运行上述命令时,我得到以下错误

转换时,Msg 241,16级,状态1,第1行转换失败 来自字符串的日期和/或时间


当我删除
convert
语句时,也会出现此错误。

第一个子查询中的第一列称为
EmployeeNumber

第二个表中的第一列正在转换为
Date

我认为您不需要一个
联合
,但您熟悉联合。您的
select
列表需要与
联合匹配

如果要解决此问题,请将第一个选择更改为类似以下内容:

select distinct cast(NULL as date) as fDate, tblcertified.employeenumber, tblcertified.machinenumber 
SELECT CONVERT (DATE, tblperiod.fromdate) AS fDate, 
       tblscheduled.employeenumber , NULL
第二个选择类似于:

select distinct cast(NULL as date) as fDate, tblcertified.employeenumber, tblcertified.machinenumber 
SELECT CONVERT (DATE, tblperiod.fromdate) AS fDate, 
       tblscheduled.employeenumber , NULL
作为一个
加入
,您的查询将如下所示:

SELECT DISTINCT CONVERT (DATE, tblperiod.fromdate) AS fDate, tblcertified.employeenumber, 
                tblcertified.machinenumber
FROM   tblcertified 
       INNER JOIN machine_output 
               ON tblcertified.machinenumber = machine_output.machinenumber 
       INNER JOIN tblscheduled 
               on tblscheduled.employeenumber = tblcertified.employeenumber
       INNER JOIN tblperiod
               ON tblperiod.number = tblscheduled.number 
WHERE  tblperiod.fromdate BETWEEN Dateadd(m, -3, Getdate()) AND Getdate() ;

这只是对你想要什么的猜测(你没有样本数据来说明)。但是,您可以在一个查询中执行所有联接,并提取所需的列。

即使您可以转换它,它是否与Employeenumber(在第一个查询中)具有相同的类型?你们知道在一个联合中,两个查询的结果集中应该有相同的类型和相同的列数吗?哦,所以我真的不想联合。我希望在一个查询中获得结果,而不是在两列中。我该怎么做?这正是我需要的,谢谢