J'ai joint ensemble 2 ensembles de données XML qui tirent de la table principale SAME (dbo.Submission).SQL XML - 2 ensembles de données séparées - ORDER BY & RowNumber
Il y a un champ DATETIME situé dans dbo.Submission appelé [AddedDt], je sélectionne les données basées sur 2 ensembles de critères différents mais je souhaite formater les données retournées avec un ORDER BY [AddedDt] comme cette soumission XML doit aller dans l'ordre chronologique. Ci-dessous est ma commande SELECT, j'ai laissé la commande ORDER BY dans chaque requête, mais ce n'est que la commande ORDERING dans [OrderDt] Order. Je dois ajouter un nœud supplémentaire qui a le numéro de la ligne, je l'ai fait dans l'utilisation de données d'origine
ROW_NUMBER() OVER (ORDER BY (SELECT sub.AddedDt
)) AS "PolicyRecordNumber" ,
Cependant, cela doit apparaître sous la « politique » Élément de chaque politique et fonctionnent de façon séquentielle, Comment Je réalise ceci?
SELECT (SELECT sub.Polno AS "Cancellation/PolicyNumber" ,
sub.Term_date AS "Cancellation/CancellationDate" ,
sub.PremXIPT AS "Cancellation/ReturnPremium/NetAmount" ,
sub.PremIPT AS "Cancellation/ReturnPremium/Ipt" ,
sub.FeeXIPT AS "Cancellation/Fee/NetAmount" ,
sub.FeeIPT AS "Cancellation/Fee/Ipt"
FROM dbo.Submissions sub
WHERE sub.[Transaction] = 'Cancellation'
ORDER BY sub.AddedDt
FOR
XML PATH('Policy') ,
TYPE
) ,
(SELECT sub.Polno AS "PCNewBusiness/PolicyNumber" ,
sub.[Inception Date] AS "PCNewBusiness/StartDate" ,
sub.[Renewal Date] AS "PCNewBusiness/StartDate" ,
sub.PremXIPT AS "PCNewBusiness/Premium/NetAmount" ,
sub.PremIPT AS "PCNewBusiness/Premium/IPT" ,
sub.FeeXIPT AS "PCNewBusiness/Fee/NetAmount" ,
sub.FeeIPT AS "PCNewBusiness/Fee/IPT" ,
ph.Title AS "PCNewBusiness/Policyholder/PolicyholderType/PrivateIndividual/Name/Title" ,
ph.Firstname AS "PCNewBusiness/Policyholder/PolicyholderType/PrivateIndividual/Name/FirstNames" ,
ph.Surname AS "PCNewBusiness/Policyholder/PolicyholderType/PrivateIndividual/Name/LastName" ,
ph.DateOfBirth AS "PCNewBusiness/Policyholder/PolicyholderType/PrivateIndividual/DateOfBirth" ,
ph.MaritalStatus AS "PCNewBusiness/Policyholder/PolicyholderType/PrivateIndividual/MaritalStatus" ,
ph.Sex AS "PCNewBusiness/Policyholder/PolicyholderType/PrivateIndividual/Sex" ,
ph.Contact AS "PCNewBusiness/Policyholder/Contact" ,
ph.Addr1 AS "PCNewBusiness/Policyholder/Address/Address1" ,
ph.Addr2 AS "PCNewBusiness/Policyholder/Address/Address2" ,
ph.Addr3 AS "PCNewBusiness/Policyholder/Address/Address3" ,
ph.Addr4 AS "PCNewBusiness/Policyholder/Address/Address4" ,
ph.Pcode AS "PCNewBusiness/Policyholder/Address/Postcode" ,
ISNULL(ph.Tel, ph.Tel2) AS "PCNewBusiness/Policyholder/Phone" ,
ph.Email AS "PCNewBusiness/Policyholder/Email" ,
cov.Cover AS "PCNewBusiness/Cover/CoverType" ,
cov.Excess AS "PCNewBusiness/Cover/PolicyExcess" ,
cov.NCBYears AS "PCNewBusiness/Cover/NoClaimsBonusYears" ,
cov.NCBOtherVeh AS "PCNewBusiness/Cover/NCBOtherVehicle" ,
cov.ClassOfUse AS "PCNewBusiness/Cover/Use" ,
(SELECT dri1.RelationshipToPH 'RelationshipToPolicyholder' ,
(SELECT dri2.Drivertitle 'Title' ,
dri2.FirstName 'FirstNames' ,
dri2.Surname 'LastName'
FROM dbo.Drivers dri2
WHERE dri1.ID = dri2.ID
AND dri1.Driver = dri2.Driver
FOR
XML PATH('Name') ,
TYPE
) ,
dri1.DOB 'DateOfBirth' ,
dri1.Licence 'LicenceType' ,
dri1.LicenceHeld 'PeriodLicenceHeld' ,
(SELECT ph1.Addr1 'Address1' ,
ph1.Addr2 'Address2' ,
ph1.Addr3 'Address3' ,
ph1.Addr4 'Address4' ,
ph1.Pcode 'AddressPostcode'
FROM dbo.PolicyHolder ph1
WHERE ph1.ID = ph.ID
FOR
XML PATH('HomeAddress') ,
TYPE
) ,
dri1.PeriodResident 'PeriodResident' ,
dri1.VehFreq 'VehicleUseFrequency' ,
dri1.OtherVehs 'HasUseOfOtherVehicle' ,
ISNULL(dri1.Occupation, [dri1].[2ndOccupation]) 'MainOccupation' ,
dri1.[2ndOccupation] 'SecondaryOccupation' ,
dri1.RefIns 'MotorInsuranceRefusalDetails' ,
dri1.Accconv 'HasCriminalConvictions' ,
(SELECT 'false' 'Removed' ,
TWClaimType 'ClaimType' ,
IncidentDate ,
Amount
FROM dbo.Claims cla1
WHERE cla1.ID = sub.ID
AND cla1.Driver = dri1.Driver
FOR
XML PATH('DriverClaim') ,
TYPE
) AS "Claims" ,
(SELECT 'false' 'Removed' ,
con1.ConvCode 'ConvictionCode' ,
con1.ConvDate 'ConvictionDate' ,
con1.Amount 'Fine'
FROM dbo.Convictions con1
WHERE con1.ID = sub.ID
AND con1.Driver = dri1.Driver
FOR
XML PATH('DriverConviction') ,
TYPE
) AS "Convictions" ,
(SELECT 'false' 'Removed' ,
med1.Description ,
med1.AgeDiagnosed ,
med1.Medication ,
med1.[DVLA Notified] 'DvlaNotified' ,
med1.CondNote 'ConditionDeteriorating' ,
med1.LicRest 'LicenceRestricted'
FROM dbo.Medical med1
WHERE med1.ID = sub.ID
AND med1.Driver = dri1.Driver
FOR
XML PATH('DriverMedicalCondition') ,
TYPE
) AS "MedicalConditions"
FROM dbo.Drivers dri1
WHERE dri1.ID = sub.ID
FOR
XML PATH('Drivers') ,
TYPE
) AS "PCNewBusiness/Driver" ,
veh.Make AS "PCNewBusiness/Vehicles/Vehicle/Make" ,
veh.Model AS "PCNewBusiness/Vehicles/Vehicle/Model" ,
veh.Reg AS "PCNewBusiness/Vehicles/Vehicle/RegistrationNumber" ,
veh.Body AS "PCNewBusiness/Vehicles/Vehicle/BodyType" ,
veh.Parking AS "PCNewBusiness/Vehicles/Vehicle/LocationWhenNotInUse" ,
(SELECT SUM(Mileage) 'AnnualMileage'
FROM dbo.Drivers dri2
WHERE sub.ID = dri2.ID
) AS "PCNewBusiness/Vehicles/Vehicle/AnnualMileage" ,
veh.YearMade AS "PCNewBusiness/Vehicles/Vehicle/YearOfManufacture" ,
veh.Engine_size AS "PCNewBusiness/Vehicles/Vehicle/EngineSizeCc" ,
veh.Purchasedate AS "PCNewBusiness/Vehicles/Vehicle/PurchaseDate" ,
veh.Value AS "PCNewBusiness/Vehicles/Vehicle/PurchasePrice" ,
veh.Value1 AS "PCNewBusiness/Vehicles/Vehicle/EstimatedValue" ,
veh.Seats AS "PCNewBusiness/Vehicles/Vehicle/NumberOfSeats" ,
veh.RightHandDrive AS "PCNewBusiness/Vehicles/Vehicle/RightHandDrive" ,
veh.Fuel AS "PCNewBusiness/Vehicles/Vehicle/FuelType"
FROM dbo.Submissions sub
LEFT OUTER JOIN dbo.PolicyHolder ph ON ph.ID = sub.ID
LEFT OUTER JOIN dbo.Cover cov ON cov.ID = sub.ID
LEFT OUTER JOIN dbo.Vehicle veh ON veh.ID = sub.ID
WHERE sub.[Transaction] = 'New Business'
ORDER BY sub.AddedDt
FOR
XML PATH('Policy') ,
TYPE
)
FOR XML PATH('Policies');
Salut! Cette question est-elle résolue? Avez-vous besoin d'aide supplémentaire? S'il vous plaît permettez-moi un indice: Si cette question est résolue, il serait très aimable de votre part, de cocher le contrôle d'acceptation ci-dessous le compteur de la (meilleure) réponse. Cela 1) marquer ce problème comme résolu 2) rendre plus facile pour les adeptes de trouver la meilleure solution 3) payer des points au answerer et 4) payer des points pour vous. Puisque vous avez franchi la frontière de 15 points vous-même, vous êtes en outre invité à voter sur les contributions. C'est le SO-façon de dire merci. Codage heureux! – Shnugo