Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как изобразить такой query?  [new]
мадама
Member

Откуда: страна кленового листа
Сообщений: 459
Есть таблица

USE [your]
GO
/****** Object:  Table [dbo].[Table_1]    Script Date: 10/23/2013 11:00:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Table_1](
	[Name] [varchar](50) NULL,
	[Fruit] [varchar](50) NULL,
	[Qty] [tinyint] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO

insert into Table_1 values ('Masha','Lemon',1)
insert into Table_1 values ('Pasha','Lemon',2)
insert into Table_1 values ('Kolya','Lemon',1)
insert into Table_1 values ('Masha','Apple',1)
insert into Table_1 values ('Pasha','Apple',3)


Как получить результат

Masha Lemon 1
Pasha Lemon 2
Kolya Lemon 1
Masha Apple 1
Pahsa Apple 3
Kolya Apple 0
23 окт 13, 20:47    [15023087]     Ответить | Цитировать Сообщить модератору
 Re: Как изобразить такой query?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Если пары Name-Fruit уникальны, то:
SELECT
  Q1.Name,
  Q2.Fruit,
  ISNULL(Q3.Qty, 0) AS Qty
FROM
(SELECT DISTINCT Name FROM dbo.Table_1) Q1
CROSS JOIN
(SELECT DISTINCT Fruit FROM dbo.Table_1) Q2
OUTER APPLY
(SELECT Qty FROM dbo.Table_1 WHERE Name = Q1.Name AND Fruit = Q2.Fruit) Q3
23 окт 13, 21:11    [15023141]     Ответить | Цитировать Сообщить модератору
 Re: Как изобразить такой query?  [new]
мадама
Member

Откуда: страна кленового листа
Сообщений: 459
Thank you!
23 окт 13, 22:32    [15023347]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить