SQL Вывод сервера с использованием Pivot - PullRequest
0 голосов
/ 13 апреля 2020

Детализация таблицы

Column_name     Type
-------------------------
Id              int
ProductId       int
Product         nvarchar
ProductDetails  nvarchar

Данные таблицы

Id  ProductId   Product ProductDetails
---------------------------------------
1   1           Name    IPhone
2   1           Price   40000
3   2           Name    Nokia
4   2           Price   20000

Я хочу получить результат, используя сводку, как это:

Product Price
-------------
IPhone  40000
Nokia   20000

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Вы можете использовать просто сделать условное агрегирование:

select max(case when product = 'Name' then ProductDetails end) as Product,
       max(case when product = 'Price' then ProductDetails end) as Price
from table t
group by ProductId;
0 голосов
/ 13 апреля 2020

Вы можете попробовать следующее внутреннее объединение.

Create table TblProducts (Id int,
ProductId       int,
Product         nvarchar(20),
ProductDetails  nvarchar(20))

insert into TblProducts Values
(1,   1,           'Name', 'IPhone'),
(2,   1,           'Price', '40000'),
(3,   2,           'Name', 'Nokia'),
(4,   2,           'Price', '20000')

Select a.*, b.ProductDetails from(
Select * From TblProducts where Product = 'Name'
)a inner join(
Select * From TblProducts where Product = 'Price'
)b on a.ProductId = b.ProductId

Вот живое db <> fiddle demo.

enter image description here

...