一、select DISTINCT(a.USER_NO)  no,b.USER_NAME  name,
c.LINKMAN1  aa,c.TELEPHONE1   ab,c.LINKMAN2  ba,
c.TELEPHONE2  bb,c.LINKMAN3  ca,c.TELEPHONE3  cb,c.LINKMAN4  da,c.TELEPHONE4  db  
from SHOULD_CHARGE  a,USER_FILES  b,NOTE_GENIUS  c where a.USER_NO=b.USER_NO 
and b.USER_NO =c.USER_NO and a.BALANCE_FLAG='N' 
and (b.USER_STATE='U' or b.USER_STATE='T') and b.BUSINESS_DPT_NO=:BUSINESS_DPT_NO二、select USER_NO as no,sum(isnull(S_CHARGE_MONEY,0)-isnull(CHARGED_MONEY,0))  CHARGE_MONEY
from SHOULD_CHARGE WHERE USER_NO=:USER_NO GROUP BY USER_NO having sum(isnull(S_CHARGE_MONEY,0)-isnull(CHARGED_MONEY,0))>0这俩个sql怎么联合在一起啊,因为查询速度太慢,我想把他们做成视图???
两个sql都是用USER_NO关联的。

解决方案 »

  1.   

    Union
    返回对两个集合进行 union 运算所生成的集合,可以保留重复的成员。语法
    Union(«Set1», «Set2»[, ALL])替代语法 1
    {«Set1», «Set2»}替代语法 2
    «Set1» + «Set 2»注释
    此函数返回 «Set1» 和 «Set2» 的 union 运算结果,并在默认情况下消除重复项。ALL 标志表示在并集中保留重复项。从尾部删除重复项。 也可以将逗号分隔的集合列表用括号括起来或使用 + 运算符,通过 union 算法合并集合。例如:{USA.Children, CANADA.Children}与{USA.Children} + {CANADA.Children}等同于Union(USA.Children, CANADA.Children, ALL)使用替代语法时始终保留重复的成员。说明  此替代语法是 OLE DB 中多维表达式 (MDX) 的 Microsoft® SQL Server™ 2000 Analysis Services 扩展。
      

  2.   

    象你这么复杂的查询,本来就耗时,如果你再把它们联合起来,那消耗的时间就更多了。建议你把它分成几个简单的sql语句,分别执行,只要完成工作就可以了。