日期:2014-05-18  浏览次数:20882 次

兄弟姐妹们,帮我写个语句呀?急
一个表里面两个字段
fitemclassid.fname
当fitenclassid=1时,fname表示客户的名称
当fitenclassid=7时,fname表示计量单位的名称
一切随缘   说:
当fitenclassid=8时,fname表示物料的名称
fitemclassid    fname
1         合肥
1         安庆
1         北京
7         组
7         公斤
8         娃哈哈
查询的结果要显示成这样
客户   计量单位    物料
合肥    组      娃哈哈
安庆    公斤
北京

多谢了



------解决方案--------------------
只有這幾種情況?
------解决方案--------------------
Create Table TEST
(fitemclassid Int,
fname Nvarchar(10))
Insert TEST Select 1,N '合肥 '
Union All Select 1,N '安庆 '
Union All Select 1,N '北京 '
Union All Select 7,N '组 '
Union All Select 7,N '公斤 '
Union All Select 8,N '娃哈哈 '
GO
Select ID = (Select Count(*) From TEST Where fitemclassid = A.fitemclassid And fname <= A.fname), * Into #T From TEST A

Select
Max(Case fitemclassid When 1 Then fname Else ' ' End) As 客户,
Max(Case fitemclassid When 7 Then fname Else ' ' End) As 计量单位,
Max(Case fitemclassid When 8 Then fname Else ' ' End) As 物料
From #T
Group By ID

Drop Table #T
GO
Drop Table TEST
--Result
/*
客户 计量单位 物料
北京 公斤 娃哈哈
合肥 组
安庆
*/
------解决方案--------------------
Create Table tb_List (fitemclassid int,fname varChar(8))
Insert tb_List Select
1, '合肥 '
union all Select 1, '安庆 '
union all Select 1, '北京 '
union all Select 7, '组 '
union all Select 7, '公斤 '
union all Select 8, '娃哈哈 '
Go

Select distinct f1.fname as 客户,f7.fname as 计量单位,f8.fname as 物料 from tb_List f1
left JOIN tb_List f7
On f1.fitemclassid <> f7.fitemclassid
left JOIN tb_List f8
On f1.fitemclassid <> f8.fitemclassid
where f1.fitemclassid=1 and f7.fitemclassid=7 and f8.fitemclassid=8


结果:
客户 计量单位 物料
-------- -------- --------
安庆 公斤 娃哈哈
安庆 组 娃哈哈
北京 公斤 娃哈哈
北京 组 娃哈哈
合肥 公斤 娃哈哈
合肥 组 娃哈哈

(所影响的行数为 6 行)