我觉得这个问题主要是前端界面显示和sql语句字符串的组合,跟数据库的关系比较少。
搞清楚了case和sum的用法,剩下的就是根据具体情况来组合字符串了。

解决方案 »

  1.   

    SELECT SUM(CASE WHEN sales.stor_id='6380' and payterms=60 THEN sales.qty ELSE 0 END) AS col1, 
        SUM(CASE WHEN sales.stor_id='6380' and payterms=30 THEN sales.qty ELSE 0 END) AS col2, 
        SUM(CASE sales.stor_id WHEN '7066' and payterms=60 THEN sales.qty ELSE 0 END) AS col3, 
        SUM(CASE sales.stor_id WHEN '7066' and payterms=30 THEN sales.qty ELSE 0 END) AS col4 
    FROM sales
      

  2.   

    sorry,写错了!
    如下凑出SQL语句是一个办法,但比较麻烦也不太可能通用:
    SELECT SUM(CASE WHEN sales.stor_id='6380' and payterms=60 THEN sales.qty ELSE 0 END) AS col1, 
        SUM(CASE WHEN sales.stor_id='6380' and payterms=30 THEN sales.qty ELSE 0 END) AS col2, 
        SUM(CASE WHEN sales.stor_id ='7066' and payterms=60 THEN sales.qty ELSE 0 END) AS col3, 
        SUM(CASE WHEN sales.stor_id ='7066' and payterms=30 THEN sales.qty ELSE 0 END) AS col4 
    FROM sales
      

  3.   

    我觉得bluepower2008(蓝色力量)说得有道理,你可以把一系列的条件用字串组合来处理。
      

  4.   

    同意,应该在程序中根据不同条件组合SQL,然后传送给数据库处理
      

  5.   

    haiver:
    你的方法不错,我觉得该语句还算有规律可循的。你是个脚踏实地的程序员,中国需要你这样的程序员,前途不可限量。请各位专家继续各抒高论,看有没有更好的方法
      

  6.   

    Haiwer(海阔天空--回复语句只对MSSQL有效)
    是不是指case when **** then +++ end不太可能通用,
    而case *** when *** then ++++ end是通用的?
      

  7.   

    to:whitehare(小白免) 
      我说的不通用指的是,有些DBMS根本没有CASE WHEN 语句。