Я проделал некоторую работу в , казалось бы, простой задачей, но не смог найти простого решения. Я хотел задать этот вопрос самыми простыми словами, чтобы другие и я могли извлечь выгоду из подобных ситуаций. Я наткнулся на запрос, который нужно было немного реорганизовать, что принесло некоторые странные результаты.Объединить результаты SQL-запроса
Что бы лучший способ превратить эти результаты:
ID Customer CustomerID (US) CustomerID (CA) CustomerID (EU)
-----------------------------------------------------------------------
1 XYZ XYZ - US NULL NULL
2 XYZ NULL XYZ - CA NULL
3 XYZ NULL NULL XYZ - EU
В это:
ID Customer CustomerID (US) CustomerID (CA) CustomerID (EU)
-----------------------------------------------------------------------
1 XYZ XYZ - US XYZ - CA XYZ - EU
Если есть больше чем один подход, что было бы лучшим способом следующий самый ток лучшие практики?
Ниже приведен пример кода, который в настоящее время производит первые результаты:
SELECT Header.ID,
Header.Customer,
CASE Detail.Location
WHEN 'US' THEN Detail.CustomerID
ELSE NULL
END AS [CustomerID (US)],
CASE Detail.Location
WHEN 'CA' THEN Detail.CustomerID
ELSE NULL
END AS [CustomerID (CA)],
CASE Detail.Location
WHEN 'EU' THEN Detail.CustomerID
ELSE NULL
END AS [CustomerID (EU)]
FROM dbo.Header AS Header
LEFT OUTER JOIN dbo.Detail AS Detail
ON Header.ID = Detail.HeaderID
Большое спасибо за вашу помощь!
Cant вы просто группа по Header.Customer затем MAX() другие столбцы? – br4d
выглядит как сводный вопрос: https://stackoverflow.com/questions/13372276/simple-way-to-transpose-columns-and-rows-in-sql – wero