SELECT 
 '' AS HC_NO,
 CASE WHEN (('444' IN (SELECT A.template_code FROM mcs_doc_form_records WHERE template_code='444'))      
            AND ('00002' IN (SELECT A.node_code FROM mcs_doc_form_records WHERE node_code='00002'))      
   )THEN (SELECT A.STRING_VALUE from mcs_doc_form_records A) 
   END AS INHOSP_INDEX_NO,--住院号
   
 CASE WHEN (('444' IN (SELECT A.template_code FROM mcs_doc_form_records WHERE template_code='444'))      
            AND ('00001'IN (SELECT A.node_code FROM mcs_doc_form_records WHERE node_code='00001'))      
   )THEN (SELECT A.STRING_VALUE from mcs_doc_form_records A) 
   END AS PAT_NAME --患者姓名
   
   FROM mcs_doc_form_records A请教各位大神,我想通过case的方式从数据库中一个表里检索出多个字段,其中两个字段的取值,需要另外两个字段取固定值才能获取想要的数据,并且最后AS成别名,我试着写了一条sql能顺利运行,但是结果字段都是空值,是不是不能用case when then 这种语句?

解决方案 »

  1.   

    给出测试数据,和你的预期结果,用 excel 画一下。
      

  2.   


    我就是想根据 node_code和template_code,查String_Value这个字段下面的第二行和姓名这两条信息
      

  3.   

    看不清你的图,从sql上看,case when的部分,改成
    SELECT A.STRING_VALUE from mcs_doc_form_records A where node_code = '00002' and template_code = '444' 
    不行吗