c# - 如何将变量(别名)传递给where条件SQL

标签 c# sql-server

大家好

我想将 'coalesce(MDT.DeptName,DD5.Name) as 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#。请指教

最佳答案

您不能在 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 子句在 Select 之前处理,我们将不会在 Where 子句中有 Alias 名称

关于c# - 如何将变量(别名)传递给where条件SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39461190/

相关文章:

sql-server - 与源不匹配时合并

c# - 一般运行任务

c# - 如何使用 Exchange Web Services 2010 Managed API 获取文件夹大小?

c# - Log Entity Framework .Net Core 2.2 EF 调试输出窗口

c# - 如果注册了 DispatcherUnhandledException,则 Control.LayoutUpdated 中发生异常后发生堆栈溢出

sql-server - NVARCHAR 的奇怪异常

sql-server - NHibernate 标识符更改异常

c# - 我需要对每个命令使用 try-catch 吗?

c# - SQL Server 中的 CLR 存储过程的性能

sql-server - 使用特定列查找过程列表