sql - 操作数类型冲突:日期与 sql server 中的 smallint 错误不兼容
问题描述
我写了一个 sql 查询来获取 2006 年到 2008 年之间的员工雇佣人数。这是我来自 Adventurework2014.dimemployee 表的代码
SELECT YEAR(cast('HireDate' as int)), DepartmentName,
count(ParentEmployeeKey) AS 'total emplyee join'
FROM DimEmployee
where HireDate between 2006 and 2008
group by DepartmentName, HireDate,FirstName,ParentEmployeeKey
ORDER BY YEAR(HireDate)
我上面的代码显示错误
操作数类型冲突:日期与 smallint 不兼容
请帮我解决一些问题。
解决方案
您错过了使用year()
inwhere
子句:
where year(HireDate) >= 2006 and year(HireDate) <= 2008
此外,您也不需要使用cast()
函数,year()
因为它会返回数字类型。
您的SELECT
陈述对我来说很奇怪,当您包括以下内容时,它应该具有聚合列GROUP BY
:
SELECT YEAR(HireDate), DepartmentName,
count(ParentEmployeeKey) AS 'total emplyee join'
FROM DimEmployee
WHERE year(HireDate) >= 2006 and year(HireDate) <= 2008
GROUP BY DepartmentName, YEAR(HireDate), FirstName, ParentEmployeeKey
ORDER BY YEAR(HireDate);
推荐阅读
- javascript - 检索子路由时的 Node.js 404
- perl - Apache Spark 的 perl API?
- clang - Clang 构建失败并失败:lib/libLTO.so.7
- python - 无法安装任何软件包 - EnvironmentError [Errno 2]
- django - How to check new posts since users last login Django
- google-cloud-platform - Request Denied forever - 请求增加 Google Cloud 中的 gpu 配额
- javascript - 需要 Javascript(或 JQuery)长字符串搜索和 CSS 插入帮助
- java - 如何使用 Selenium 在撰写部分中单击更多选项?
- typescript - 缩小工厂返回类型而不通过类的最佳方法
- visual-studio - 如何正确停止运行 dotnet core web 应用程序?