表结构~~客户名称,产品名称,数量
显示结果~~ 客户名称1,客户名称2,产品名称,数量1,数量2大致要求~~把同一种产品的2个客户和想对应数量放在同一列中(SQL语句完成)~~
(只考虑同一种产品最多只有2个相同客户)
显示结果~~ 客户名称1,客户名称2,产品名称,数量1,数量2大致要求~~把同一种产品的2个客户和想对应数量放在同一列中(SQL语句完成)~~
(只考虑同一种产品最多只有2个相同客户)
调试欢乐多
可能哪个地方有错,我也没试,反正就这个思路,要是对了,我不要分,惭愧!
select * (((select top1 客户名称 from 表 where 产品名称=产品名称) as 客户名称1) union ((select 客户名称 from 表 where 产品名称=产品名称 and 客户名称!=(select top1 客户名称 from 表 where 产品名称=产品名称)) as 客户名称2) union ...)
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.產品名稱
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 個資料列受到影響)
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
这次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 個資料列受到影響)