标题可能写得不对,因为我也不知道怎么说才好,如下:
表A:
ID,Name
表B:
ID,AID,Value写个SQL语句:select a.name,b.value from 表A a,表B b where a.ID=b.AID得出以下结果(示例):name,value
----------
aaa,1
bbb,2
ccc,3
ccc,4
ccc,5我想把结果中name列的ccc替换成NULL,就是在查询分析器结果单元格里不显示出ccc,如何改写SQL语句?
当然,这种结果在软件的前端用合并表格控件的单元格就成了,但我不知道在查询分析器里如何写,是否可以写?

解决方案 »

  1.   

    ??
    select case when a.name='ccc' then null else a.name end name,b.value from 表A a,表B b where a.ID=b.AID
      

  2.   

    ??
    select nullif(a.name,'ccc') name ,b.value from 表A a,表B b where a.ID=b.AID
      

  3.   


    --> 生成测试数据表: [tb]
    IF OBJECT_ID('[tb]') IS NOT NULL
    DROP TABLE [tb]
    GO
    CREATE TABLE [tb] ([name] [nvarchar](10),[value] [int])
    INSERT INTO [tb]
    SELECT 'aaa','1' UNION ALL
    SELECT 'bbb','2' UNION ALL
    SELECT 'ccc','3' UNION ALL
    SELECT 'ccc','4' UNION ALL
    SELECT 'ccc','5'-->SQL查询如下:SELECT name = CASE [value]
                       WHEN (
                                SELECT MIN([value]) 
                                FROM tb
                                WHERE name = t.name
                            ) THEN name
                       ELSE ''
                  END, [value] 
    FROM [tb] t
    /*
    name       value
    ---------- -----------
    aaa        1
    bbb        2
    ccc        3
               4
               5(5 行受影响)
    */这样?
      

  4.   

    select a.name,min(b.value) from 表A a,表B b where a.ID=b.AID group by a.name
      

  5.   


    首先谢谢楼上的各位同仁的认真回复,在下感激之至,由于我发贴时没有交待清楚,引起大家误解,见谅!
    大家建议用min()函数,取得htl258所未的结果,是正确的,但事实不是这样。
    我重新写一下需求,主要是变更了value字段,由int换成string,改成address更直观一些
    表A:
    ID,Name
    表B:
    ID,AID,Address写个SQL语句:select a.name,b.Address from 表A a,表B b where a.ID=b.AID得出以下结果(示例):name,value
    ----------
    aaa,bj
    bbb,sh
    ccc,ak
    ccc,ak
    ccc,ak
    ddd,vb
    ddd,vb
    ....我的期望结果如下:
    name,value
    ----------
    aaa,bj
    bbb,sh
    ccc,ak
       ,ak
       ,ak
    ddd,vb
       ,vb
    ....
      

  6.   

    --> 生成测试数据表: [tb]
    IF OBJECT_ID('[tb]') IS NOT NULL
    DROP TABLE [tb]
    GO
    CREATE TABLE [tb] ([name] [nvarchar](10),[value] [nvarchar](10))
    INSERT INTO [tb]
    SELECT 'aaa','bj' UNION ALL
    SELECT 'bbb','sh' UNION ALL
    SELECT 'ccc','ak' UNION ALL
    SELECT 'ccc','ak' UNION ALL
    SELECT 'ccc','ak' UNION ALL
    SELECT 'ddd','vb' UNION ALL
    SELECT 'ddd','vb'--SELECT * FROM [tb]-->SQL查询如下:
    ;WITH cte AS 
    (
    SELECT rn=ROW_NUMBER()OVER(PARTITION BY NAME ORDER BY NAME),*
    FROM tb  
    )
    SELECT name = CASE rn
       WHEN 1 THEN name
                       ELSE ''
                  END, [value] 
    FROM [cte] t
    /*
    name       value
    ---------- ----------
    aaa        bj
    bbb        sh
    ccc        ak
               ak
               ak
    ddd        vb
               vb(7 行受影响)
    */