2017-08-23 2 views
0

J'ai 2 valeurs différentes J'essaie de STUFF ici. C'est Quantité + Prix. Par exemple: 1- 0,36 $; 100- 0,29 $; 25- 0,31 $. Comment puis-je trier par quantité avant d'être bourré? (1,25,100 au lieu de 1,100,25) Je suis venu à travers ce lien Sort data before concatenating using STUFF FOR XML, mais il traite de 1 valeur et je traite avec 2 valeursComment trier avant d'utiliser STUFF dans SSRS

SELECT STUFF(
    (SELECT DISTINCT TOP (5) 
     '; ' + (CAST(FLOOR(CASE WHEN PCFBD.Quantity IS NOT NULL THEN PCFBD.Quantity ELSE 1 END) AS VARCHAR) + '-$' + CAST(REPLACE(REPLACE(RTRIM(REPLACE(
     CASE WHEN PCF.PriceMethod = 0 THEN ROUND(I.CdCost/(100 - PCF.FormulaPercent) * 100, 2) 
      WHEN PCFBH.PriceFormula = 2 AND PCFBD.FormulaPercent IS NULL THEN ROUND(I.CdCost/(100 - PCF.FormulaPercent) * 100, 2) 
      WHEN PCFBH.PriceFormula = 2 AND PCFBD.FormulaPercent IS NOT NULL THEN ROUND(I.CdCost/(100 - PCFBD.FormulaPercent) * 100, 2) 
      WHEN PCFBH.PriceFormula = 1 THEN ROUND((I.ListPrice * (100 - PCFBD.FormulaPercent)) * .01,2) 
      ELSE NULL END, '000' ,'')), ' ','0') + '', '. ', '') AS VARCHAR)) 
FROM    Item AS I 
INNER JOIN  PriceContractFamily AS PCF ON I.FamilyId = PCF.FamilyId 
       AND I.ItemStatus IN (0, 5) 
INNER JOIN  StockItem SI ON I.ItemId = SI.ItemId 
       AND SI.WarehouseId = '502E5876-C26B-4E11-8B88-AFE0C34ECF0D'      
LEFT OUTER JOIN PriceContractFamilyBracketHeader AS PCFBH ON PCF.PriceContractFamilyId = PCFBH.PriceContractFamilyId 
LEFT OUTER JOIN PriceContractFamilyBracketDetail AS PCFBD ON PCFBH.BracketHeaderId = PCFBD.BracketHeaderId 
WHERE I.ListPrice = @ListPrice 
AND LEFT(I.ItemNumber, 6) = @ItemNumber 
AND PCF.PriceContractId = @PriceContractId 
FOR XML PATH('')),1, 2, '') AS QtyPrice               

Répondre

0

Vous devriez être en mesure d'ajouter une ORDER BY avant la Instruction FOR XML PATH.