zoukankan      html  css  js  c++  java
  • SQL2000和SQL2005的行转列处理方法

    SQL2000和SQL2005的行转列处理方法

    2007-10-26 09:24

    原表结构

    SELECT [show_id]
           ,[year]
           ,[n1]
           ,[n2]
           ,[n3]
           ,[n4]
           ,[n5]
       FROM [datapass_db].[dbo].[test]

    1:SQL2005中的列转行.

    SELECT [show_id], mon, SubTotal
    FROM [datapass_db].[dbo].[test] UNPIVOT
        (SubTotal FOR mon IN
           ([n1], [n2], [n3],[n4],[n5])
    )AS unpvt;

    2:SQL 2000 中的列转行

    declare @tmpsql varchar(8000)
    declare @sql varchar(8000)
    select @tmpsql = ''
    select @tmpsql = @tmpsql + ' UNION ALL SELECT '
       +' show_id,'
             +' year ,'
       +name +' as mon'
       +' from dbo.test'
    from syscolumns
    where object_id('dbo.test')=id and left(name,1) = 'n'
    select @tmpsql=stuff(@tmpsql,1,11,'')
    select @sql = 'select * from (mailto:%20+@tmpsql+) t where t.mon>0'
    print @sql
    exec (@sql)

    付送:

    1:查找,已知列的表名.

    select syscolumns.name,sysobjects.name from syscolumns , sysobjects
    where syscolumns.id = sysobjects.id and syscolumns.name='要查的列名'

    2:找出在两个数据库中表名称在彼此数据库中不存在的表名称,字段.

    SELECT accdb.table_name AS accdb_table_name,
    accdb.columns_name AS accdb_columns_name,
    accdb1.table_name AS accdb1_table_name,
    accdb1.columns_name AS accdb1_columns_name
    FROM (SELECT Accdb.dbo.sysobjects.name AS table_name,
    Accdb.dbo.syscolumns.name AS columns_name
    FROM Accdb.dbo.syscolumns INNER JOIN
    Accdb.dbo.sysobjects ON
    Accdb.dbo.syscolumns.id = Accdb.dbo.sysobjects.id
    WHERE (NOT (Accdb.dbo.syscolumns.name LIKE '@%')) AND
    (Accdb.dbo.sysobjects.xtype = 'U')) accdb LEFT OUTER JOIN
    (SELECT sysobjects.name AS table_name,
    syscolumns.name AS columns_name
    FROM syscolumns INNER JOIN
    sysobjects ON syscolumns.id = sysobjects.id
    WHERE (NOT (syscolumns.name LIKE '@%')) AND (sysobjects.xtype = 'U'))
    accdb1 ON accdb.columns_name = accdb1.columns_name AND
    accdb.table_name = accdb1.table_name
    WHERE (accdb1.table_name IS NULL) OR
    (accdb1.columns_name IS NULL) order by accdb.table_name,accdb.columns_name

    其中accdb1为旧库,accdb为新库。
    不只能查出表不同, 还包括字段的

  • 相关阅读:
    SERU最佳需求分析方法
    需求规格说明书(Volere版)
    开发设计模式之设计六大原则
    清晰、高效、一致、美观 – 关于设计原则的优先级排序
    一个案例,三个角色,简单说下B端产品的权限设计
    如何从0到1打造一个完美的业务系统?
    MarkdownPad2.5 注册码
    WEBSTORM快捷键
    jQuery
    BOM与DOM
  • 原文地址:https://www.cnblogs.com/newwind521/p/1308631.html
Copyright © 2011-2022 走看看