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(在第一个查询中)具有相同的类型?你们知道在一个联合中,两个查询的结果集中应该有相同的类型和相同的列数吗?哦,所以我真的不想联合。我希望在一个查询中获得结果,而不是在两列中。我该怎么做?这正是我需要的,谢谢