表结构~~客户名称,产品名称,数量
显示结果~~ 客户名称1,客户名称2,产品名称,数量1,数量2大致要求~~把同一种产品的2个客户和想对应数量放在同一列中(SQL语句完成)~~
(只考虑同一种产品最多只有2个相同客户)

解决方案 »

  1.   

    select * (((select top1 客户名称 from 表 where 产品名称=产品名称) as 客户名称1) union ((select top2客户名称 from 表 where 产品名称=产品名称) as 客户名称2) union ...)
    可能哪个地方有错,我也没试,反正就这个思路,要是对了,我不要分,惭愧!
      

  2.   

    对了,不能用top2 要把第一个客户名称筛选了用  and 客户名称!=(select   top1   客户名称   from   表   where   产品名称=产品名称)
      

  3.   

    我重新写一边
    select * (((select top1 客户名称 from 表 where 产品名称=产品名称) as 客户名称1) union ((select 客户名称 from 表 where 产品名称=产品名称 and 客户名称!=(select top1 客户名称 from 表 where 产品名称=产品名称)) as 客户名称2) union   ...) 
      

  4.   

    SELECT
    DISTINCT T1.客戶名稱, T1.產品名稱, T1.數量, ARER.客戶名稱, ARER.產品名稱
    FROM TB AS T1
    INNER JOIN 
    FROM
    (
    SELECT T2.客戶名稱, T2.產品名稱, T2.數量
    FROM TB AS T2
    ) AS ARER ON T1.產品名稱 = ARER.產品名稱
      

  5.   


    declare @t table(客户名称 varchar(10),产品名称 varchar(10),数量 int)
    insert into @t values('甲','金条',10)
    insert into @t values('乙','金条',20)
    insert into @t values('甲','钻石',30)
    insert into @t values('乙','钻石',20)
    insert into @t values('甲','珍珠',50)
    insert into @t values('乙','珍珠',30)
    insert into @t values('甲','摇头丸',10)
    insert into @t values('乙','AK47',10)select isnull(t1.客户名称,'') as 客户名称1,
    isnull(t2.客户名称,'') as 客户名称2,
    t1.产品名称 as 产品名称,
    isnull(t1.数量,0) as 数量1,
    isnull(t2.数量,0) as 数量2
    from @t as t1
    left join @t as t2 on t2.产品名称=t1.产品名称 and t1.客户名称 <> t2.客户名称-----------------------------------------------------------------------
    客户名称1      客户名称2      产品名称       数量1         数量2
    ---------- ---------- ---------- ----------- -----------
    甲          乙          金条        10          20
    乙          甲          金条        20          10
    甲          乙          钻石         30          20
    乙          甲          钻石         20          30
    甲          乙          珍珠         50          30
    乙          甲          珍珠         30          50
    甲                     摇头丸        10          0
    乙                     AK47        10          0(8 個資料列受到影響)
      

  6.   


    SELECT t1.CustName, t1.ProName, t1.Number, t2.CustName AS Expr1, 
          t2.Number AS Expr2
    FROM Table1 t1 LEFT OUTER JOIN
          Table1 t2 ON t1.ProName = t2.ProName AND t1.CustName <> t2.CustName
      

  7.   


    这次OK了  哈~~~
    declare @t table(客户名称 varchar(10),产品名称 varchar(10),数量 int)
    insert into @t values('甲','金条',10)
    insert into @t values('乙','金条',20)
    insert into @t values('甲','钻石',30)
    insert into @t values('乙','钻石',20)
    insert into @t values('甲','珍珠',50)
    insert into @t values('乙','珍珠',30)
    insert into @t values('甲','摇头丸',10)
    insert into @t values('乙','AK47',10)select 
    isnull(t1.客户名称,'') as 客户名称1,
    isnull(t2.客户名称,'') as 客户名称2,
    t1.产品名称 as 产品名称,
    isnull(t1.数量,0) as 数量1,
    isnull(t2.数量,0) as 数量2
    from @t as t1
    left join @t as t2 on t2.产品名称=t1.产品名称 and t1.客户名称 <> t2.客户名称
    where not exists(select 1 from @t where 产品名称 = t1.产品名称 and 客户名称 > t1.客户名称)-------------------------------------------------------
    客户名称1      客户名称2      产品名称       数量1         数量2
    ---------- ---------- ---------- ----------- -----------
    甲          乙          金条        10          20
    甲          乙          钻石         30          20
    甲          乙          珍珠         50          30
    甲                     摇头丸        10          0
    乙                     AK47        10          0(5 個資料列受到影響)