例如有a,b,c 三个值,abc分别对应一个truncate语句
我要根据abc间的不同组合,来truncate,怎样有选择的实现,谈谈思路也行

解决方案 »

  1.   

    最好给出完整的表结构,测试数据,计算方法和正确结果.否则耽搁的是你宝贵的时间。
    如果有多表,表之间如何关联?
    如何更有效地在SQL Server论坛上提问
    http://topic.csdn.net/u/20100716/19/6f132f16-20e4-418c-8dee-b99d5f86d320.html?75910
      

  2.   


    --我抽象个吧
    --表ta(tag int) 
    a=1
    b=3
    c=5truncate table a
    truncate table b
    truncate table c根据c=1 执行truncate table a
        c=3 .....b
        ...
        c=4 .....a,b--估计表述的还是不清
      

  3.   

    你不是都已经写出来了?
    自己用判断语句,然后truncate table.或者用动态SQL语句.if ...
       set @sql = 'truncate table a'
    else
       ...exec @sql
      

  4.   


    if
    begin
    end
    else if
    begin
    end
      

  5.   

    IF OBJECT_ID('A') IS NOT NULL DROP TABLE A 
    IF OBJECT_ID('B') IS NOT NULL DROP TABLE B
    IF OBJECT_ID('TA') IS NOT NULL DROP TABLE TA
    GO
    CREATE TABLE A(COL1 INT )
    INSERT INTO A
    SELECT 1
    CREATE TABLE B(COL2 INT)
    INSERT INTO B
    SELECT 2
    CREATE TABLE TA(TAG INT)
    INSERT INTO TA 
    SELECT 1 UNION ALL SELECT 3
    GO
    DECLARE @SQL VARCHAR(MAX)
    SELECT 
    @SQL=ISNULL(@SQL+'
    ','')+'TRUNCATE TABLE '+
    CASE TAG
    WHEN 1 THEN 'A' --表名 
    WHEN 2 THEN 'C'
    WHEN 3 THEN 'B'
    END
    FROM TA
    GROUP BY TAG
    EXEC (@SQL)SELECT 'A',COUNT(1) FROM A
    UNION ALL SELECT 'B',COUNT(1) FROM B
    /*
    A 0
    B 0
    */
      

  6.   

    也可以用SP_MSFOREACHTABLE,不过我更喜欢用拼SQL的方式进行。