Ich habe die folgende Ansicht in SQL Server 2012; Der Screenshot zeigt, wie ein einzelner Kunde mehrere Telefone und Kontonummern, was zu mehreren ReihenVerschieben von Rollen in einer einzigen Zeile in SQL Server, die die korrekten Ergebnisse nicht zurückgeben
SELECT
dbo.CustomerModels.CustomerID, dbo.CustomerModels.FirstName,
dbo.CustomerModels.Gender, dbo.CustomerModels.AccountsCount,
dbo.CustomerModels.PhoneNumbersCount,
dbo.CustomerAccountModels.CustomAccountFieldValue,
dbo.CustomerPhoneNumberModels.CustomPhoneFieldValue,
dbo.AgencyModels.AgencyName, dbo.AgencyModels.AgencyCode
FROM
dbo.CustomerModels
INNER JOIN
dbo.CustomerAccountModels ON dbo.CustomerModels.CustomerID = dbo.CustomerAccountModels.CustomerID
INNER JOIN
dbo.CustomerPhoneNumberModels ON dbo.CustomerModels.CustomerID = dbo.CustomerPhoneNumberModels.CustomerID
INNER JOIN
dbo.AgencyModels ON dbo.CustomerModels.AgencyID = dbo.AgencyModels.AgencyID
Jetzt möchte ich zeigen die Ergebnisse hat, so dass sie in der Abbildung unten statt der früheren Screenshot gezeigt.
Nach der Umsetzung werden die Ergebnisse zeigt Ordnung in einer Säulenform, aber dann anstelle der verschiedenen Kontonummern und Telefonnummern unter eigenen Spalte ist es die gleichen Zahlen unter verschiedenen Spalte
The unten zeigt meinen Code zum Transponieren der Abfrage
select
--CustomerID,
max([FirstName]) as [Full Name],
max([GenderSex]) AS [Sex],
max([AccountsCount]) as [No. Of Accounts],
--max([PhoneNumbersCount]) as [Total Fone No],
max([CustomAccountFieldValue]) as [Account 1],
--max([CustomAccountFieldValue]) as [Account 2],
--max([CustomAccountFieldValue]) as [Account 3],
--max([CustomAccountFieldValue]) as [Account 4],
--max([CustomAccountFieldValue]) as [Account 5],
max([CustomPhoneFieldValue]) as [Phone No 1],
max([CustomPhoneFieldValue]) as [Phone No. 2],
max([CustomPhoneFieldValue]) as [Phone No. 3],
max([CustomPhoneFieldValue]) as [Phone No. 4],
max([CustomPhoneFieldValue]) as [Phone No. 5],
max([AgencyName]) as [Agency],
max([AgencyCode]) as [Agency Code]
-- and so on for the remaining columns...
from
(select
CustomerID, FirstName, Gender,
(CASE WHEN Gender = 0 THEN 'Female' WHEN Gender = 1 THEN 'Male' ELSE 'Other' END) As [GenderSex],
AccountsCount, PhoneNumbersCount,
CustomAccountFieldValue,
CustomPhoneFieldValue, AgencyName, AgencyCode
, t = concat('CustomAccountFieldValue ',row_number() over (partition by CustomerID order by CustomerID))
, c = concat('CustomPhoneFieldValue ',row_number() over (partition by CustomerID order by CustomerID))
from SMSAlerts.dbo.ViewAllCustomers
) src
pivot (count(CustomerID) for t in ([Account 1],[Account 2],[Account 3], [Account 4], [Account 5]))pt
pivot (max(PhoneNumbersCount) for c in ([Phone No. 1],[Phone No. 2],[Phone No. 3],[Phone No. 4],[Phone No. 5]))pc
group by FirstName;
Bitte helfen Sie auf diese Richtung. Vielen Dank im Voraus
noch für Ihre Antworten warten, bitte Mitglieder –