ID Product Supplier1 Supplier2 Supplier3 City1 City2 City3
1 Car Honda Toyota Nissan Detroit Miami Los Angeles
2 Bike Schwinn Roadmaster Fleetwing Cincinatti Chicago Tampa
3 Motorcycle Harley Yamaha Kawasaki Omaha Dallas Atlanta
结果Id Product SuppID SupplierName CityName
1 Car 1 Honda Detroit
1 Car 2 Nissan Los Angeles
1 Car 3 Toyota Miami
2 Bike 1 Fleetwing Tampa
2 Bike 2 Roadmaster Chicago
2 Bike 3 Schwinn Cincinatti
3 Motorcycle 1 Harley Omaha
3 Motorcycle 2 Kawasaki Atlanta
3 Motorcycle 3 Yamaha Dallas
1 Car Honda Toyota Nissan Detroit Miami Los Angeles
2 Bike Schwinn Roadmaster Fleetwing Cincinatti Chicago Tampa
3 Motorcycle Harley Yamaha Kawasaki Omaha Dallas Atlanta
结果Id Product SuppID SupplierName CityName
1 Car 1 Honda Detroit
1 Car 2 Nissan Los Angeles
1 Car 3 Toyota Miami
2 Bike 1 Fleetwing Tampa
2 Bike 2 Roadmaster Chicago
2 Bike 3 Schwinn Cincinatti
3 Motorcycle 1 Harley Omaha
3 Motorcycle 2 Kawasaki Atlanta
3 Motorcycle 3 Yamaha Dallas
解决方案 »
- vs2005下通过AdoDB与sqlserver2000相连,select不成功,为什么?
- SQL这样的查询,不知该怎么弄
- 求一个SQL 语句(关于统计)
- 用SQL语句查询Access数据库,如何自动生成一个记录行号的字段?
- SQL语句
- 请教:这样列怎么实现。用触发器吗?在表中有个字段它的结构是日期加上当天的自动增量例如:日期为2006-08-08的是:20060808001,200608080
- Select Case when else
- 怎样建立一张主键自动增加的表
- 国内it人员的困惑。。。。。。。
- sqlserver 如何让主数据库从多个子数据库中定期获取更新数据?
- 未处理 sqlexception 必须声明标量变量 "@uname
- SQL 多表联合查询
DROP TABLE #Suppliers
CREATE TABLE #Suppliers
(
ID INT ,
Product VARCHAR(500) ,
Supplier1 VARCHAR(500) ,
Supplier2 VARCHAR(500) ,
Supplier3 VARCHAR(500) ,
City1 VARCHAR(500) ,
City2 VARCHAR(500) ,
City3 VARCHAR(500)
)
INSERT INTO #Suppliers
SELECT 1 , 'Car' , 'Honda' , 'Toyota' , 'Nissan' , 'Detroit' , 'Miami' , 'Los Angeles'
UNION ALL
SELECT 2 , 'Bike' , 'Schwinn' , 'Roadmaster' , 'Fleetwing' , 'Cincinatti' , 'Chicago' , 'Tampa'
UNION ALL
SELECT 3 , 'Motorcycle' , 'Harley' , 'Yamaha' , 'Kawasaki' , 'Omaha' , 'Dallas' , 'Atlanta' --SELECT * FROM #Suppliers
SELECT ID , Product , SuppID = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY SupplierName) , SupplierName , CityName
FROM #Suppliers
CROSS APPLY ( VALUES ( Supplier1, City1)
, ( Supplier2, City2)
, ( Supplier3, City3) ) x (SupplierName , CityName)
WHERE SupplierName IS NOT NULL
OR CityName IS NOT NULL
/*
ID Product SuppID SupplierName CityName
1 Car 1 Honda Detroit
1 Car 2 Nissan Los Angeles
1 Car 3 Toyota Miami
2 Bike 1 Fleetwing Tampa
2 Bike 2 Roadmaster Chicago
2 Bike 3 Schwinn Cincinatti
3 Motorcycle 1 Harley Omaha
3 Motorcycle 2 Kawasaki Atlanta
3 Motorcycle 3 Yamaha Dallas
*/