水晶查询到sql?

时间:2014-01-29 16:02:02

标签: sql sql-server crystal-reports

我不确定如何提出这个问题。我需要转换这个

MACHINE HOURS [@HrsMachine]:
if left({Employee.First_Name},1)="8" then {Job_Operation_Time.Act_Setup_Hrs}+{Job_Operation_Time.Act_Run_Hrs} else 0

Crystal报告查询到SQL查询。我理解表名。列部分,但我不明白后面的数字是什么,即。

  

左({Employee.First_Name},1)=" 8"

这是对的吗?如果员工名字中有一个8,那么作业操作时间实际设置时间加上作业操作时间实际运行时间,否则不返回任何内容。

有人可以帮我理解一些伪代码吗?

编辑:

好的,我试过

SELECT TOP 50 Employee.First_Name, Job_Operation_Time.Act_Setup_Hrs, Job_Operation_Time.Act_Run_Hrs,
        CASE
          WHEN LEFT(Employee.First_Name, 1)='8' THEN 
            Job_Operation_Time.Act_Setup_Hrs + Job_Operation_Time.Act_Run_Hrs
          ELSE 0
        END FOO
FROM   Employee, Job_Operation_Time 

但我收到此错误:警告:mssql_next_result()要求参数1为资源,对象在第673行的/home/toolplas/public_html/main/manage/adminer.php中给出

它在某种程度上起作用,因为我获得了前50名员工,但没有那些以8号开头的人(8号是机器)。我不确定添加是否正常。

2 个答案:

答案 0 :(得分:2)

int machineHours = 0;
if(Employee.First_Name.CharAt(0) == 8) // if the first character i.e., left most character
                                      //in an employee's first name is equal to 8
machineHours = Act_Setup_Hurs + Act_Run_hrs;

所以基本上公式只是为名字开头有'8'的员工增加小时数,其他人都为0。

答案 1 :(得分:1)

SELECT  ...,
        CASE
          WHEN LEFT(Employee.First_Name, 1)='8' THEN 
            Job_Operation_Time.Act_Setup_Hrs + Job_Operation_Time.Act_Run_Hrs
          ELSE 0
        END TOTAL_HOURS
FROM    ...
-- remove non-machines
WHERE   LEFT(Employee.First_Name, )='8'

**编辑**

如果要删除非机器的所有内容,则公式可以是:

Job_Operation_Time.Act_Setup_Hrs + Job_Operation_Time.Act_Run_Hrs TOTAL_HOURS