I'm having a problem with inserting data into a table in specific order from another table.I want ordered data by column Niveau
My query is like :
IF OBJECT_ID('tempdb..#DISPLAYVALUEALL') IS NOT NULL
DROP TABLE #DISPLAYVALUEALL
SELECT
Ecritures.RecIdLine AS RecIdLine,
Ecritures.DISPLAYVALUEComb AS DISPLAYVALUEComb,
LevelTable.DIMENSIONATTRIBUTE AS DimAttribute,
LevelTable.LEVEL_ AS Niveau,
DimAttr.Name AS Dim_Label
INTO
#DISPLAYVALUEALL
FROM
#BudgetTransTmp As Ecritures
INNER JOIN
#InterfacesParmTmp AS Tmp1 ON Tmp1.DATAAREAID = Ecritures.DATAAREAID
INNER JOIN
MicrosoftDynamicsAx.dbo.DIMENSIONHIERARCHYLEVEL As LevelTable ON LevelTable.DIMENSIONHIERARCHY = Ecritures.ACCOUNTSTRUCTURE
AND LevelTable.PARTITION = @Partition
AND LevelTable.DIMENSIONATTRIBUTE IN (Tmp1.TaskCode, Tmp1.Activity, Tmp1.BudgetNature, Tmp1.CentreCout)
INNER JOIN
MicrosoftDynamicsAx.dbo.DIMENSIONATTRIBUTE As DimAttr ON DimAttr.RECID = LevelTable.DIMENSIONATTRIBUTE
AND DimAttr.PARTITION = @Partition
ORDER BY
RecIdLine,DISPLAYVALUEComb , Niveau ASC, DimAttribute DESC
--SELECT * from #DISPLAYVALUEALL
This doesn't work. Is it illegal to use an order by in a select into statement?
This is my result
ReciID DisplayValue Dimension Niveau
5637157342 601200-001-026-- 22565421189 5
5637157342 601200-001-026-- 22565421195 2
5637157342 601200-001-026-- 22565421196 3
5637157342 601200-001-026-- 22565421197 4
5637157326 601200-001-027-- 22565421189 5
5637157326 601200-001-027-- 22565421195 2
5637157326 601200-001-027-- 22565421196 3
5637157326 601200-001-027-- 22565421197 4
Thanks!
Update : my solution is adding this line :
Row_number() over(ORDER BY Ecritures.RecIdLine, Ecritures.DISPLAYVALUEComb, LevelTable.LEVEL_ ASC, LevelTable.DIMENSIONATTRIBUTE DESC) as RowNumber,
And my script becomes :
IF OBJECT_ID('tempdb..#DISPLAYVALUEALL') IS NOT NULL
DROP TABLE #DISPLAYVALUEALL
SELECT Row_number() over(ORDER BY Ecritures.RecIdLine ,Ecritures.DISPLAYVALUEComb , LevelTable.LEVEL_ asc, LevelTable.DIMENSIONATTRIBUTE desc) as RowNumber,
Ecritures.RecIdLine AS RecIdLine,
Ecritures.DISPLAYVALUEComb AS DISPLAYVALUEComb,
LevelTable.DIMENSIONATTRIBUTE AS DimAttribute,
LevelTable.LEVEL_ AS Niveau,
DimAttr.Name AS Dim_Label
INTO #DISPLAYVALUEALL
FROM #BudgetTransTmp As Ecritures
INNER JOIN #InterfacesParmTmp AS Tmp1
ON Tmp1.DATAAREAID = Ecritures.DATAAREAID
INNER JOIN MicrosoftDynamicsAx.dbo.DIMENSIONHIERARCHYLEVEL As LevelTable
ON LevelTable.DIMENSIONHIERARCHY = Ecritures.ACCOUNTSTRUCTURE
AND LevelTable.PARTITION = @Partition
AND LevelTable.DIMENSIONATTRIBUTE IN (Tmp1.TaskCode,Tmp1.Activity, Tmp1.BudgetNature, Tmp1.CentreCout)
INNER JOIN MicrosoftDynamicsAx.dbo.DIMENSIONATTRIBUTE As DimAttr
ON DimAttr.RECID = LevelTable.DIMENSIONATTRIBUTE
AND DimAttr.PARTITION = @Partition
ORDER BY RowNumber
Now the data is ordered in table I check by :
SELECT * from #DISPLAYVALUEALL