首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据SQL查询向下拉列表添加值

根据SQL查询向下拉列表添加值
EN

Stack Overflow用户
提问于 2016-04-16 08:35:16
回答 1查看 40关注 0票数 2

我有一个dropdownlist,其值由一个查询绑定,该查询是

代码语言:javascript
复制
select emp_card_no, 
       emp_name + '-' 
                + cast(emp_card_no as varchar) 
                + '(' 
                + datename(MM,a.dt_of_leave) 
                + ' - ' 
                + cast(year(a.dt_of_leave)as varchar)
                +')' emp_name 
from emp_mst a 
where month(a.dt_of_leave) >= month(getdate())-1  
  and year(a.dt_of_leave) = 
        case when month(getdate())=1 then year(getdate())-1 
             else year(getdate()) 
        end
order by emp_name 

其结果就像这样。

现在我想要的是,在Emp_name列中,我希望在以下查询的基础上,将文本添加为PROCESS(April - 2016)后面的PENDING

代码语言:javascript
复制
select emp_mkey, * from emp_mon_day
where emp_mkey = 312
 and month = 4
 and year = 2016

如果查询返回任何结果,则PROCESS否则为PENDING

注意事项

第一查询列Emp_card_noemp_mon_day表中的Emp_mkey

还请参阅绑定下拉列表的代码。

代码语言:javascript
复制
protected void funfillEmployee()
{
    DataTable DtCombo = new DataTable();
    string strdate = System.DateTime.Now.ToString("dd/MM/yyyy");

    DtCombo = ObjPriDal.ExecuteDataTable("select emp_card_no, emp_name + '-' + cast(emp_card_no as varchar)+ '(' + datename(MM,a.dt_of_leave)  + ' - ' + cast(year(a.dt_of_leave)as varchar)+')' emp_name  " +
                         "  from emp_mst a where month(a.dt_of_leave) >= month(getdate())-1  and  year(a.dt_of_leave)= case " +
                         "   when  month(getdate())=1 then year(getdate())-1 else year(getdate()) end order by emp_name ");

    cmbEmp_Name.DataTextField = "emp_name";
    cmbEmp_Name.DataValueField = "emp_card_no";
    cmbEmp_Name.DataSource = DtCombo;
    cmbEmp_Name.DataBind();
    cmbEmp_Name.Items.Insert(0, new ListItem("--Select--", "0"));
    DtCombo.Clear();
}

让我知道怎么做。

我正在使用SQL-server-2005

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-16 09:05:15

试着做这样的事情:

代码语言:javascript
复制
select a.emp_card_no, 
       a.emp_name + '-' 
                  + cast(a.emp_card_no as varchar) 
                  + '(' 
                  + datename(MM,a.dt_of_leave) 
                  + ' - ' 
                  + cast(year(a.dt_of_leave)as varchar)
                  +') '
                  +                
                    case when m.emp_mkey IS NULL 
                         then 'PENDING' 
                         else 'PROCESS' 
                    end                  
                  emp_name 
from emp_mst a 
LEFT JOIN emp_mon_day m ON m.Emp_mkey = a.Emp_card_no 
                        AND m.month = month(a.dt_of_leave) 
                        AND  m.year = year(a.dt_of_leave)
where month(a.dt_of_leave) >= month(getdate())-1  
  and year(a.dt_of_leave) = 
        case when month(getdate())=1 then year(getdate())-1 
             else year(getdate()) 
        end
order by emp_name 

但你可能会把这部分

代码语言:javascript
复制
AND m.month = month(a.dt_of_leave) AND  m.year = year(a.dt_of_leave)

因为月份和年份是保留的词,我怀疑你这样命名列,但你没有指定其他名称。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36661989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档