表A      city      money
         北京        100
         天津        200
         上海        300
         北京        200
         天津        300
         上海        200
结果         城市1      城市2        钱             北京        (空)        100
           (空)      天津         200
           北京        (空)        200
           (空)      天津         300求 sql  语句   不考虑上海

解决方案 »

  1.   

    DECLARE @TB TABLE(CITY NVARCHAR(2), MONEY INT)
    INSERT @TB
    SELECT N'北京',  100 UNION ALL 
    SELECT N'天津',  200 UNION ALL 
    SELECT N'上海',  300 UNION ALL 
    SELECT N'北京',  200 UNION ALL 
    SELECT N'天津',  300 UNION ALL 
    SELECT N'上海',  200SELECT CASE WHEN CITY=N'北京' THEN N'北京' ELSE N'' END AS C1,
    CASE WHEN CITY=N'天津' THEN N'天津' ELSE N'' END AS C2,MONEY
    FROM @TB
    WHERE CITY<>N'上海'
    /*
    C1   C2   MONEY
    ---- ---- -----------
    北京        100
         天津   200
    北京        200
         天津   300
    */
      

  2.   

    SELECT 城市1=CASE WHEN CITY=N'北京' THEN N'北京' ELSE N'' END ,
        城市2=CASE WHEN CITY=N'天津' THEN N'天津' ELSE N'' END ,MONEY
    FROM tb
    WHERE CITY<>'上海'
      

  3.   

      代表 Unicode字符串
      

  4.   

    用varchar()容易出现乱码
    这个事解决方法
    在字符串前面加上N
    select * from tb where Title=N'上海' 
      

  5.   

    SELECT 城市1=case city when '北京' then '北京' else '' end,
           城市2=case city when '天津' then '天津' else '' end,
           [MONEY]
    FROM @T
    WHERE CITY<>'上海'
      

  6.   

    create TABLE #TB11(CITY NVARCHAR(2), MONEY INT)
    INSERT #TB11
    SELECT N'北京',  100 UNION ALL 
    SELECT N'天津',  200 UNION ALL 
    SELECT N'上海',  300 UNION ALL 
    SELECT N'北京',  200 UNION ALL 
    SELECT N'天津',  300 UNION ALL 
    SELECT N'上海',  200select (case when CITY='北京' then N'北京' else '' end) '北京',
    (case when CITY='天津' then N'天津' else '' end) '天津',
    money
    from #TB11 where CITY<>'上海'
    北京   天津   money
    ---- ---- -----------
    北京        100
         天津   200
    北京        200
         天津   300(4 行受影响)
      

  7.   

    行列转换...
    SELECT 城市1=CASE WHEN CITY=N'北京' THEN N'北京' ELSE N'' END ,
           城市2=CASE WHEN CITY=N'天津' THEN N'天津' ELSE N'' END ,
           MONEY
    FROM tb
    WHERE CITY<>'上海'