проблема кросс-таблицы - PullRequest
0 голосов
/ 19 июля 2010

Вот очень подробный вопрос: эта дата относится только к 1 таблице

custcode  address
cust1     capitol, cebu city
cust1     gen. maxilom, cebu city
cust1     guadalupe, cebu city
cust2     paknaan, mandaue city
cust2     basak, mandaue city
cust3     lapu-lapu city

В моем отчете я хочу, чтобы эти поля были в моем средстве просмотра отчетов

customer name  location1           location2                location3
cust1          capitol, cebu city  gen. maxilom, cebu city  guadalupe, cebu city
cust2          paknaan, mandaue    basak, mandaue           lapu-lapu city

, пожалуйста, помогите ..

1 Ответ

0 голосов
/ 19 июля 2010

Если у вас есть поле местоположения, которое вы нам не показали, которое может различить, что должно идти в каждом столбце

SELECT 
custcode, 
MAX(CASE WHEN location = 1 THEN address END) AS location1,
MAX(CASE WHEN location = 2 THEN address END) AS location2,
MAX(CASE WHEN location = 3 THEN address END) AS location3
FROM X
GROUP BY custcode

Если вы полагаетесь на порядок строк Ответ, специфичный для SQL Server.

Предполагается, что у вас есть поле идентификатора, из которого можно рассчитать порядок «первой» строки.

with X as
(
SELECT 1 AS ID, 'cust1' AS  custcode, 'capitol, cebu city' AS address 
UNION ALL
SELECT 2 AS ID,  'cust1' AS  custcode, 'gen. maxilom, cebu city' AS address 
UNION ALL
SELECT 3 AS ID,  'cust1' AS  custcode, 'guadalupe, cebu city' AS address 
UNION ALL
SELECT 4 AS ID,  'cust2' AS  custcode, 'paknaan, mandaue city' AS address 
UNION ALL
SELECT 5 AS ID,  'cust2' AS  custcode, 'basak, mandaue city' AS address 
UNION ALL
SELECT 6 AS ID,  'cust2' AS  custcode, 'lapu-lapu city'
)
, Y AS
(
SELECT ROW_NUMBER() OVER (PARTITION BY custcode ORDER BY ID) AS RN, 
       custcode,
       address 
FROM X
)

SELECT custcode, [1] AS location1 , [2] AS location2,[3] AS location3 FROM Y
PIVOT  
(  
Max(address)  
FOR RN IN ([1], [2],[3])  
) AS PivotTable; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...