在SQL Server中更改结果的结构

时间:2015-04-10 18:14:49

标签: sql sql-server

我必须转换它:

id name   product description
---------------------------
1  Kurt   p1      water
1  Kurt   p2      salt
2  Claude p3      pepper
2  Claude p4      mint

进入这个:

id name   product1 description1 product2 description2
-----------------------------------------------------
1  Kurt   p1       water        p2       salt
2  Claude p3       pepper       p4       mint

拜托,我正在寻找答案,我没有找到这个......

表结构如下:

  • client(ID,名称和更多数据)
  • products(ID,说明和更多数据)
  • prodclient(id,idclient,idproduct)

谢谢

PD。我想要添加到第二个结果列的行是相同的数据,而不是添加值。

1 个答案:

答案 0 :(得分:1)

试试这个

http://sqlfiddle.com/#!6/12b1c/6/0

CREATE TABLE Products
    ( id   int, name varchar(6), product varchar(2), description varchar(6))
;

INSERT INTO Products
    (id, name, product, description)
VALUES
    (1, 'Kurt', 'p1', 'water'),
    (1, 'Kurt', 'p2', 'salt'),
    (2, 'Claude', 'p3', 'pepper'),
    (2, 'Claude', 'p4', 'mint')
;

WITH ProductList as
(
select 
name,
max(product) as product1,
min (product) as product2

from Products

group by name
  )

 select pl.*,p1.description as description1 , p2.description as description2
 from ProductList pl
Left Outer Join  Products P1
on pl.product1 = p1.product
Left Outer Join  Products P2
on pl.product2 = p2.product