SELECT 大项目号,大项目名称,小项目号,车间编号,车间名称,班组编号,班组名称, CASE HRGROUPWORKHOURS.TYPE WHEN 0 THEN '报工' WHEN 1 THEN '调整' ELSE HRGROUPWORKHOURS.TYPE END as 类型, SUM(工时)/60 班组总工时 FROM ( SELECT HRGROUPWORKHOURS.PRNAME_S 小项目名称, HRGROUPWORKHOURS.PRNAME 大项目名称, HRGROUPWORKHOURS.PRCODE_S 小项目号, HRGROUPWORKHOURS.PRCODE 大项目号, BSWORKCENTER.BSWORKSHOP_CODE 车间编号, BSWORKCENTER.BSWORKSHOP_NAME 车间名称, BSWORKCENTER.CODE 班组编号, BSWORKCENTER.NAME 班组名称, HRGROUPWORKHOURS.DATE 日期, SUM(HRGROUPWORKHOURS.HOURS) 工时, HRGROUPWORKHOURS.TYPE FROM HRGROUPWORKHOURS LEFT JOIN BSWORKCENTER ON BSWORKCENTER.GUID = HRGROUPWORKHOURS.BSWORKCENTER_GUID WHERE (HRGROUPWORKHOURS.DATE>='2023-4-25' and HRGROUPWORKHOURS.DATE<='2023-5-24') AND HRGROUPWORKHOURS.PRCODE IS NOT NULL GROUP BY HRGROUPWORKHOURS.PRNAME_S, HRGROUPWORKHOURS.PRNAME, HRGROUPWORKHOURS.PRCODE_S, HRGROUPWORKHOURS.PRCODE, HRGROUPWORKHOURS.DATE, HRGROUPWORKHOURS.BSWORKCENTER_GUID, BSWORKCENTER.BSWORKSHOP_CODE, BSWORKCENTER.BSWORKSHOP_NAME, BSWORKCENTER.CODE, BSWORKCENTER.NAME, BSWORKCENTER.BSWORKSHOP_GUID, HRGROUPWORKHOURS.TYPE) a GROUP BY 班组编号, 班组名称,大项目号,大项目名称,小项目号,车间编号,车间名称,类型 ORDER BY 大项目号,小项目号,班组编号,类型 列名类型无效
时间: 2024-04-27 13:19:55 浏览: 6
根据您提供的 SQL 语句,我看到了一条错误信息:列名类型无效。这个错误通常表示在 SELECT 子句中指定的某个列名无效。可能是因为列名拼写错误或不存在。请检查您的 SQL 语句中的列名是否正确。您可以逐一排查每个列名,确保每个列名都是正确的,并且对应着正确的表和列。
此外,在 SQL 语句中还有其他可能导致这个错误的原因,比如:
1. 未在 FROM 子句中指定正确的表。
2. 在 GROUP BY 子句中引用了不在 SELECT 子句中的列。
3. 在 ORDER BY 子句中引用了不在 SELECT 子句中的列。
您可以检查一下您的 SQL 语句,看看是否有以上的问题,并尝试解决它们。希望能对您有所帮助。
相关问题
select 大项目号,大项目名称,小项目号,车间编号,车间名称,班组编号,班组名称,type,sum(工时)/60 班组总工时 from( SELECT HRGROUPWORKHOURS.PRNAME_S 小项目名称, HRGROUPWORKHOURS.PRNAME 大项目名称, HRGROUPWORKHOURS.PRCODE_S 小项目号, HRGROUPWORKHOURS.PRCODE 大项目号, BSWORKCENTER.BSWORKSHOP_CODE 车间编号, BSWORKCENTER.BSWORKSHOP_NAME 车间名称, BSWORKCENTER.CODE 班组编号, BSWORKCENTER.NAME 班组名称, HRGROUPWORKHOURS.DATE 日期, SUM(HRGROUPWORKHOURS.HOURS) 工时, HRGROUPWORKHOURS.TYPE FROM HRGROUPWORKHOURS LEFT JOIN BSWORKCENTER ON BSWORKCENTER.GUID = HRGROUPWORKHOURS.BSWORKCENTER_GUID WHERE (HRGROUPWORKHOURS.DATE> ='2023-4-25' and HRGROUPWORKHOURS.DATE<= '2023-5-24' ) and HRGROUPWORKHOURS.PRCODE is not NULL GROUP BY HRGROUPWORKHOURS.PRNAME_S , HRGROUPWORKHOURS.PRNAME , HRGROUPWORKHOURS.PRCODE_S , HRGROUPWORKHOURS.PRCODE , HRGROUPWORKHOURS.DATE , HRGROUPWORKHOURS.BSWORKCENTER_GUID , BSWORKCENTER.BSWORKSHOP_CODE , BSWORKCENTER.BSWORKSHOP_NAME , BSWORKCENTER.CODE , BSWORKCENTER.NAME , BSWORKCENTER.BSWORKSHOP_GUID, HRGROUPWORKHOURS.TYPE ) a GROUP BY 班组编号, 班组名称,大项目号,大项目名称,小项目号,车间编号,车间名称,type ORDER BY 大项目号,小项目号,班组编号,type 想把HRGROUPWORKHOURS.TYPE这个的查询结果0变成报工工时,1变成调整工时
可以使用 CASE WHEN 语句来实现,将 HRGROUPWORKHOURS.TYPE 的值为 0 的工时作为报工工时,将值为 1 的工时作为调整工时。修改后的 SQL 查询语句如下:
SELECT 大项目号, 大项目名称, 小项目号, 车间编号, 车间名称, 班组编号, 班组名称,
type,
SUM(CASE WHEN HRGROUPWORKHOURS.TYPE = 0 THEN HRGROUPWORKHOURS.HOURS ELSE 0 END)/60 报工工时,
SUM(CASE WHEN HRGROUPWORKHOURS.TYPE = 1 THEN HRGROUPWORKHOURS.HOURS ELSE 0 END)/60 调整工时,
SUM(HRGROUPWORKHOURS.HOURS)/60 班组总工时
FROM
(SELECT
HRGROUPWORKHOURS.PRNAME_S 小项目名称,
HRGROUPWORKHOURS.PRNAME 大项目名称,
HRGROUPWORKHOURS.PRCODE_S 小项目号,
HRGROUPWORKHOURS.PRCODE 大项目号,
BSWORKCENTER.BSWORKSHOP_CODE 车间编号,
BSWORKCENTER.BSWORKSHOP_NAME 车间名称,
BSWORKCENTER.CODE 班组编号,
BSWORKCENTER.NAME 班组名称,
HRGROUPWORKHOURS.DATE 日期,
HRGROUPWORKHOURS.HOURS 工时,
HRGROUPWORKHOURS.TYPE
FROM
HRGROUPWORKHOURS
LEFT JOIN BSWORKCENTER ON BSWORKCENTER.GUID = HRGROUPWORKHOURS.BSWORKCENTER_GUID
WHERE
(HRGROUPWORKHOURS.DATE >= '2023-4-25' AND HRGROUPWORKHOURS.DATE <= '2023-5-24')
AND HRGROUPWORKHOURS.PRCODE IS NOT NULL) a
GROUP BY 班组编号, 班组名称, 大项目号, 大项目名称, 小项目号, 车间编号, 车间名称, type
ORDER BY 大项目号, 小项目号, 班组编号, type
已知SQL如下: select 大项目号,大项目名称,小项目号,车间编号,车间名称,班组编号,班组名称,sum(工时)/60 班组总工时 from( SELECT HRGROUPWORKHOURS.PRNAME_S 小项目名称, HRGROUPWORKHOURS.PRNAME 大项目名称, HRGROUPWORKHOURS.PRCODE_S 小项目号, HRGROUPWORKHOURS.PRCODE 大项目号, BSWORKCENTER.BSWORKSHOP_CODE 车间编号, BSWORKCENTER.BSWORKSHOP_NAME 车间名称, HRGROUPWORKHOURS.BSWORKCENTER_CODE 班组编号, HRGROUPWORKHOURS.BSWORKCENTER_NAME 班组名称, HRGROUPWORKHOURS.DATE 日期, SUM(HRGROUPWORKHOURS.HOURS) 工时, HRGROUPWORKHOURS.TYPE FROM HRGROUPWORKHOURS LEFT JOIN BSWORKCENTER ON BSWORKCENTER.GUID = HRGROUPWORKHOURS.BSWORKCENTER_GUID WHERE (HRGROUPWORKHOURS.DATE> ='2023-4-25' and HRGROUPWORKHOURS.DATE<= '2023-5-24' ) and HRGROUPWORKHOURS.PRCODE is not NULL GROUP BY HRGROUPWORKHOURS.PRNAME_S , HRGROUPWORKHOURS.PRNAME , HRGROUPWORKHOURS.PRCODE_S , HRGROUPWORKHOURS.PRCODE , HRGROUPWORKHOURS.DATE , HRGROUPWORKHOURS.BSWORKCENTER_GUID , BSWORKCENTER.BSWORKSHOP_CODE , BSWORKCENTER.BSWORKSHOP_NAME , HRGROUPWORKHOURS.BSWORKCENTER_CODE , HRGROUPWORKHOURS.BSWORKCENTER_NAME, BSWORKCENTER.BSWORKSHOP_GUID , HRGROUPWORKHOURS.TYPE) a GROUP BY 班组编号, 班组名称,大项目号,大项目名称,小项目号,车间编号,车间名称 ORDER BY 大项目号,班组编号 在原有的SQL中,增加left JOIN MCWORKREPORT ON MCWORKREPORT.BSWORKCENTER_GUID=BSWORKCENTER.GUID改变了班组工时,什么原因
在原有的SQL中增加了左连接语句"LEFT JOIN MCWORKREPORT ON MCWORKREPORT.BSWORKCENTER_GUID=BSWORKCENTER.GUID",这意味着将MCWORKREPORT表与BSWORKCENTER表进行连接,而BSWORKCENTER表又与HRGROUPWORKHOURS表进行连接,因此整个查询结果也会受到影响。
具体地说,这个左连接语句会将BSWORKCENTER表中与MCWORKREPORT表匹配的记录加入查询结果集中,而如果BSWORKCENTER表中没有匹配的记录,则会在结果集中填充NULL值。由于MCWORKREPORT表的参与,班组工时的计算也会受到影响,因为MCWORKREPORT表可能包含了一些HRGROUPWORKHOURS表中没有的工时数据。
因此,增加left JOIN MCWORKREPORT ON MCWORKREPORT.BSWORKCENTER_GUID=BSWORKCENTER.GUID改变了班组工时的计算结果,具体的变化取决于MCWORKREPORT表中的数据情况。如果MCWORKREPORT表中有一些班组工时数据,则查询结果中的班组工时会包含这些数据;反之则不会包含。