unitName(单位)    carinfo(车辆信息)   ....(字段列)      ....(字段列)
大河车辆有限公司      装载车
大河车辆有限公司      危险车
大河车辆有限公司      罐装车
小庄家有限公司        瓶颈车现在要得到的结果是根据单位查询单位下面的车辆信息 ,剔除重复的单位哦,得到的结果应该是这样
unitName                     carinfo   .......(字段列) .......(字段列)
大河车辆有限公司             装载车
                             危险车
                             罐装车
这样的sql语句怎么写呢?麻烦给条详细的语句

解决方案 »

  1.   

    unitName         carinfo .......(字段列) .......(字段列)
    大河车辆有限公司   装载车
                       危险车
                       罐装车修改了一个格式
      

  2.   


    --> 测试数据:@T
    declare @T table([unitName] varchar(16),[carinfo] varchar(6),[c1] int,[c2] int,[c3] int)
    insert @T
    select '大河车辆有限公司','装载车',1,1,1 union all
    select '大河车辆有限公司','危险车',2,2,2 union all
    select '大河车辆有限公司','罐装车',3,3,3 union all
    select '小庄家有限公司','瓶颈车',4,4,4DECLARE @unitName VARCHAR(20)
    SET @unitName='大河车辆有限公司';WITH maco AS 
    (
    SELECT ROW_NUMBER() OVER (PARTITION BY unitName ORDER BY (SELECT 1)) AS rid, * from @T
    )
    SELECT 
    CASE WHEN rid=1 THEN unitname ELSE '' END AS unitname ,
    [carinfo],c1,c2,c3 
    FROM maco WHERE unitName=@unitName
    /*
    unitname         carinfo c1          c2          c3
    ---------------- ------- ----------- ----------- -----------
    大河车辆有限公司         装载车     1           1           1
                     危险车     2           2           2
                     罐装车     3           3           3(3 row(s) affected)
    */
      

  3.   

    if object_id('[TB]') is not null drop table [TB]
    go
    create table [TB] (unitName nvarchar(16),carinfo nvarchar(6))
    insert into [TB]
    select '大河车辆有限公司','装载车' union all
    select '大河车辆有限公司','危险车' union all
    select '大河车辆有限公司','罐装车' union all
    select '小庄家有限公司','瓶颈车'select * from [TB];WITH TT
    AS(
    SELECT  ROW_NUMBER() OVER(PARTITION BY unitname ORDER BY carinfo) AS NO ,unitname,carinfo
    FROM dbo.TB)SELECT CASE WHEN no =1 THEN unitname ELSE '' END AS unitname,carinfo 
    FROM TT/*
    unitname carinfo
    大河车辆有限公司 罐装车
    危险车
    装载车
    小庄家有限公司 瓶颈车*/
      

  4.   

    SELECT CASE
             WHEN ROWNO = 1 THEN
              unitname
             ELSE
              ''
           END AS unitname,
           carinfo
      FROM (SELECT ROW_NUMBER() OVER(PARTITION BY unitname ORDER BY carinfo) AS ROWNO,
                   unitName,
                   carinfo
              FROM CAR_MST)