Advertisement
Guest User

Sales View Transform

a guest
Jan 30th, 2014
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 1.23 KB | None | 0 0
  1. SELECT
  2.     [FormattedData]
  3. FROM
  4. (
  5.     --Get our headers from the View, assuming header data is in first row for any given TranNumber as data looks to be denormalized
  6.     SELECT
  7.         [TranNumber],
  8.         '00' + CAST([TranNumber] AS varchar(10)) + CAST([TranTotal] AS varchar(30)) AS [FormattedData],
  9.         0 AS [LineType] -- Zero to identify line as a header
  10.     FROM
  11.     (
  12.         SELECT TranNumber, TranTotal, ROW_NUMBER() OVER(ORDER BY TranNumber) AS [RowNumber]
  13.         FROM SalesView
  14.     ) HEADER
  15.     WHERE HEADER.[RowNumber] = 1
  16.  
  17.  
  18.     UNION ALL
  19.  
  20.  
  21.     --Get our repeating details rows
  22.     SELECT
  23.         [TranNumber],
  24.         '01' + [Item] + CAST([Quantity] AS varchar(30)) + CAST([Price] AS varhchar(30)) AS [FormattedData],
  25.         1 AS [LineType] -- 1 to identify line as details
  26.     FROM SalesView
  27.  
  28.  
  29.     UNION ALL
  30.  
  31.  
  32.     --Get our Footers, again assuming Location is denormalized and repeated for each details row
  33.     SELECT
  34.         [TranNumber],
  35.         '02' + CAST(Location AS varchar(10)) AS [FormattedData],
  36.         2 AS [LineType] --2 to identify line as footer
  37.     FROM
  38.     (
  39.         SELECT TranNumber, Location, ROW_NUMBER() OVER(ORDER BY TranNumber) AS [RowNumber]
  40.         FROM SalesView
  41.     ) FOOTER
  42.     WHERE FOOTER.[RowNumber] = 1
  43. ) SALESEXPORT
  44. ORDER BY [TranNumber], [LineType] --put the line types in order by their TranNumber
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement