Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE PROCEDURE [dbo].[proc_StatsDay] @columns NVARCHAR(64) AS
- DECLARE @SQL_PVT1 NVARCHAR(512), @SQL_PVT2 NVARCHAR(512), @SQL_FULL NVARCHAR(4000);
- SET @SQL_PVT1 = 'SELECT OrderTime, ' + LEFT(@columns,LEN(@columns)-1) +'
- FROM (SELECT ES.Location, CONVERT(varchar(10), ES.OrderTime, 120),ES.Charge
- FROM dbo.log_sales ES
- ) AS D (Location,OrderTime,Charge)
- PIVOT (SUM (D.Charge) FOR D.Location IN
- (';
- SET @SQL_PVT2 = ') )AS PVT
- ORDER BY OrderTime DESC';
- SET @SQL_FULL = @SQL_PVT1 + LEFT(@columns,LEN(@columns)-1) +
- @SQL_PVT2;
- EXEC sp_executesql @SQL_FULL, N'@columns NVARCHAR(64)',@columns = @columns
- public class DynamicResult
- {
- public DateTime OrderDate {get;set;}
- public decimal? Location1 {get;set;}
- public decimal? Location2 {get;set;}
- //..
- public decimal? Location100 {get;set;}
- }
- IEnumerable<DynamicResult> result =
- myDataContext.ExecuteQuery<DynamicResult>(commandString, param1);
- SELECT ES.Location, DateAdd(dd, DateDiff(dd, 0, ES.OrderTime), 0),ES.Charge
- FROM dbo.log_sales ES
- public class LogSale
- {
- public string Location {get;set;}
- public DateTime OrderDate {get;set;}
- public decimal Charge {get;set;}
- }
- List<LogSale> source = LoadData();
- var pivot = source
- .GroupBy(ls => ls.OrderDate)
- .OrderBy(g => g.Key)
- .Select(g => new {
- Date = g.Key,
- Details = g
- .GroupBy(ls => ls.Location)
- .Select(loc => new {
- Location = loc.Key,
- Amount = loc.Sum(ls => ls.Charge)
- })
- });
- var pivot = source
- .GroupBy(ls => ls.OrderDate)
- .OrderBy(g => g.Key)
- .Select(g => new XElement("Date",
- new XAttribute("Value", g.key),
- g.GroupBy(ls => ls.Location)
- .Select(loc => new XElement("Detail",
- new XAttribute("Location", loc.Key),
- new XAttribute("Amount", loc.Sum(ls => ls.Charge))
- ))
- ));
Add Comment
Please, Sign In to add comment