2016-09-13 30 views
1

Goodday所有,如何通过变量(化名)到WHERE条件SQL

我想通过 '聚结(MDT.DeptName,DD5.Name)为departname' 到WHERE条件。现在错误显示无效列。任何可能性?下面 是我的代码:

SELECT op_id, 
     DD.NAME             Unit, 
     DD1.NAME             Freq, 
     DD2.NAME             Calc, 
     COALESCE(MDT.deptname, DD5.NAME)       AS departname, 
     COALESCE(CO.yearlytarget + ' ' + dd3.NAME, CO.yearlytarget)AS 
     YearlyTarget, 
     CO.pastyearresult, 
     CO.weight, 
     CO.project, 
     CO.description, 
     Co.datecreated, 
     MDT.weightvalue 
FROM [MBO].[dbo].[m_newcaloprt] CO 
     LEFT JOIN [MBO].[dbo].[m_ddl] DD 
       ON CO.unit_ddl = DD.d_id 
     LEFT JOIN [MBO].[dbo].[m_ddl] DD1 
       ON CO.freq_ddl = DD1.d_id 
     LEFT JOIN [MBO].[dbo].[m_ddl] DD2 
       ON CO.calc_ddl = DD2.d_id 
     LEFT JOIN [MBO].[dbo].[m_user] US 
       ON CO.uid = US.id 
     LEFT JOIN [MBO].[dbo].[m_user] US1 
       ON US1.deptid = US.deptid 
     LEFT JOIN [MBO].[dbo].[m_ddl] DD5 
       ON US1.deptid = DD5.d_id 
     LEFT JOIN [MBO].[dbo].[m_multipledept] MDT 
       ON MDT.projectid = CO.op_id 
     LEFT JOIN [MBO].[dbo].[m_ddl] DD3 
       ON CO.calcsymbol = DD3.d_id 
WHERE departname = '' 
     AND isactive = 0 
     AND isverifed = 1 

我想使用此代码为C#。请告知

回答

4

您不能在Where子句中使用Alias名称。使用原始列

WHERE COALESCE(MDT.deptname, DD5.NAME) = '' 
     AND isactive = 0 
     AND isverifed = 1 

这是怎样一个查询逻辑处理

1. FROM 
2. ON 
3. OUTER 
4. WHERE --here 
5. GROUP BY 
6. CUBE | ROLLUP 
7. HAVING 
8. SELECT --here 
9. DISTINCT 
10 ORDER BY 
11. TOP 

由于Where条款进行处理,我们将不会有SelectAliasWhere条款

+0

谢谢你现在工作和你的信息..完美。 – user3538475