2015-07-14 2 views
1

В моей базе данных SQL Server у одного клиента может быть много продуктов.Множественные случаи в одной строке

Когда кожух с помощью этого:

CASE 
    WHEN br.Ptype# = 'LE' THEN 'Y' 
    ELSE 'N' 
END AS [Legal], 
CASE 
    WHEN br.Ptype# = 'BR' THEN 'Y' 
    ELSE 'N' 
END AS [BR], 
CASE 
    WHEN br.Ptype# = 'WS' THEN 'Y' 
    ELSE 'N' 
END AS [Screen], 
CASE 
    WHEN br.Ptype# = 'TW' THEN 'Y' 
    ELSE 'N' 
END AS [Van] 

возвращает:

Title FirstName LastName Email     Legal BR Screen Van 
Mr  Aaaa  Aaaa  [email protected] N  Y N  N 
Mr  Aaaa  Aaaa  [email protected] Y  N N  N 

Как я могу получить возврат результатов быть однорядные с Юридическим, как Y и БР, как Y, так как это у клиента есть эти 2 типа политики? Как я знаю, что клиент имеет 2 вида страхования от моего указания 4 Я ищу Я ​​хотел бы, чтобы возвращать результаты как:

Title FirstName LastName Email    Legal BR Screen Van 
Mr  Aaaa  Aaaa  [email protected] Y  Y N  N 

Заранее спасибо за любую помощь.

SELECT DISTINCT --TOP 1000 
dbo.PARSE_NAME_UDF(yy.Name#,'H') AS [Title], 
dbo.PARSE_NAME_UDF(yy.Name#,'F') AS [FirstName], 
dbo.PARSE_NAME_UDF(yy.Name#,'L') AS [LastName], 
yy.Email# AS [Email], 
[email protected] AS [PolicyReference], 
--bc.Datecreated# AS [Date Sold], 
--br.Idat# AS [PolicyStartDate], 
CASE 
WHEN br.Ptype# = 'LE' THEN 'Y' 
ELSE 'N' 
END AS [Legal], 
CASE 
WHEN br.Ptype# = 'BR' THEN 'Y' 
ELSE 'N' 
END AS [BR], 
CASE 
WHEN br.Ptype# = 'WS' THEN 'Y' 
ELSE 'N' 
END AS [Screen], 
CASE 
WHEN br.Ptype# = 'TW' THEN 'Y' 
ELSE 'N' 
END AS [Van] 

FROM brpolicy AS br 
LEFT JOIN yyclient AS yy ON [email protected] = [email protected] AND [email protected] = [email protected] 
LEFT JOIN brcledger AS bc ON [email protected] = [email protected] AND [email protected] = [email protected] 

WHERE 
[email protected] = 'AAAA06' 
AND (br.Ptype# = 'WS' 
OR br.Ptype# = 'LE' 
OR br.Ptype# = 'BR' 
OR br.Ptype# = 'TW' 
) 

Пожалуйста, игнорировать мои br.Ref @ от ИНЕКЕ, как мой тест записи клиента

+0

Вы может потребоваться отфильтровать для Legal = 'Y' OR BR = 'Y'. Отдельный выбор, где вы НЕ включаете эти столбцы, может быть тем, что вы хотите ... – Shnugo

ответ

0

Вы можете использовать MAX:

SELECT Title, 
     FirstName, 
     LastName, 
     MAX(CASE 
       WHEN br.Ptype# = 'LE' THEN 'Y' 
       ELSE 'N' 
      END) AS [Legal], 
     MAX(CASE 
       WHEN br.Ptype# = 'BR' THEN 'Y' 
       ELSE 'N' 
      END) AS [BR], 
     CASE 
      WHEN br.Ptype# = 'WS' THEN 'Y' 
      ELSE 'N' 
     END AS [Screen], 
     MAX(CASE 
       WHEN br.Ptype# = 'TW' THEN 'Y' 
       ELSE 'N' 
      END) AS [Van] 
FROM dbo.YourTable 
GROUP BY Title, 
     FirstName, 
     LastName 
-1

Попробуйте один

Select * from (SELECT Title, 
     FirstName, 
     LastName, 
     CASE 
      WHEN br.Ptype# = 'LE' THEN 'Y' 
      ELSE 'N' 
     END AS [Legal], 
     CASE 
      WHEN br.Ptype# = 'BR' THEN 'Y' 
      ELSE 'N' 
     END AS [BR], 
     CASE 
      WHEN br.Ptype# = 'WS' THEN 'Y' 
      ELSE 'N' 
     END AS [Screen], 
     CASE 
      WHEN br.Ptype# = 'TW' THEN 'Y' 
      ELSE 'N' 
     END AS [Van] 
FROM dbo.YourTable 
GROUP BY Title, 
     FirstName, 
     LastName) as tProduct where Legal = 'Y' and BR = 'Y' 
Смежные вопросы