sql语句能在from做判断吗?因为数据量大,我把同样的表按地区分成了六张表,现在要根据输入的条件查询相应的表,如果输入的是华北就查存储华北数据的报表,这样能在from中错判断吗?
    例如:
    select * from  ( table1 when ‘华北’=‘华北’, table2 when ‘华北’=‘东北’)
    这个语句肯定不对,请问大虾们能在from中做判断吗,能的话怎么做?

解决方案 »

  1.   


    DECLARE @TABLE VARCHAR(100)
    DECLARE @SQLSTR VARCHAR(1000)
    SET @SQLSTR='SELECT * FROM ' + TABLE 
    EXEC(@SQLSTR)
    用动态用具实现就可以了,直接给@TABLE赋值就可以查询对应的表数据。自己可以修改为存储过程。
      

  2.   

    用动态用具实现就可以了,直接给@TABLE赋值就可以查询对应的表数据。自己可以修改为存储过程。
      

  3.   

    动态sql可以。还有可以把6个联合之后再查
    select * from 
    (select * from  table1 
    union all
    select * from  table2
    union all
    select * from  table3
    ...) t_all
      

  4.   

    正解,
    如果数据结构不能变,只能写一个存储过程拼接动态SQL来处理。
      

  5.   


    --用替换变量;
    SQL> select * from &tb;
    输入 tb 的值:  采购订单
    原值    1: select * from &tb
    新值    1: select * from 采购订单商品名称     订购数量 已入库数量
    ---------- ---------- ----------
    电脑               10          0
    鼠标               20          9
    键盘              100        100
    光驱              -60         -5
      

  6.   

    如果java的话 可以事先生成数据库语句吧  这样不就是可以根据条件判断不同的表了
      

  7.   

    写判断,用execute immediate执行
      

  8.   

    应该是不可以吧,没有用过,也没有想着要去用这个方式来写sql语句。
      

  9.   

    其实你不需要这样分成六个表,可以把数据保存在一个表中,利用数据库分区原理,把数据保存在不同的文件中,查询的时候,只要你数据某个片区,数据库会自动查找;如果按照你这样做的话,
    你可以做一个表,保存这个六个表的信息,片区 对用SQL,
    然后读取出来执行即可;