Hvordan kan jeg så finde tiden mellem rækkerne, men sådan at den stopper ved 6 og starter forfra ved 1 - Altså den må ikke tage tiden mellem 6 og 1 på to forskellige IDer
bruger linq og tager en group by på ID( da det lader til at være ens for alle rows der skal sammen lignes.
Så sortere du på RowNumber .... og tager Max og Min af tiden og trækker dem fra hinanden, og så har du tiden for et forløb.
Efter jeg så har skrevet overstående går det måske op for mig det ikke præcis var det du ville.
Men ellers kan du vel stadig bruge den "Group by" på ID, og så bare teste om det er sidste item. Hvis, så ved du at du skal stoppe.
mvh
Synes godt om
Slettet bruger
14. februar 2013 - 13:24#3
Tak! Dog skal det siges jeg er rimelig rookie! Så er der evt. nogle som kan bare hjælpe lidt med noget start kode??
Hvis i ikke helt forstod det.
Så vil jeg have tiden mellem hvert session ID, men starter rownumber forfra, må den sidste sessionid ikke tælle på det nye sessionid med det nye rownumber
I hvad format har du dataen i? Så vil jeg se om jeg kan fikse et eksempel til dig i aften.
Synes godt om
Slettet bruger
14. februar 2013 - 13:39#5
C#
/* Microsoft SQL Server Integration Services Script Component * Write scripts using Microsoft Visual C# 2008. * ScriptMain is the entry point class of the script.*/
using System; using System.Data; using Microsoft.SqlServer.Dts.Pipeline.Wrapper; using Microsoft.SqlServer.Dts.Runtime.Wrapper;
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute] public class ScriptMain : UserComponent { int rowNumber = 0; Guid PrevID;
public override void Input0_ProcessInputRow(Input0Buffer Row) {
namespace E { public class Raw { public int Id { get; set; } public DateTime Time { get; set; } public int SubId { get; set; } } public class Processed { public int Id { get; set; } public TimeSpan Time { get; set; } public int SubId { get; set; } } public class Program { public static List<Processed> RawToProcessed(List<Raw> raw) { List<Processed> res = new List<Processed>(); int j = 0; while(j < raw.Count) { j++; for(int i = 0; i < 3 - 1; i++) { res.Add(new Processed { Id = raw[j].Id, Time = raw[j].Time - raw[j-1].Time, SubId = i + 1 }); j++; } } return res; } public static void Main(string[] args) { List<Raw> raw = new List<Raw>(); raw.Add(new Raw { Id = 1, Time = DateTime.Now.AddSeconds(1), SubId = 1 }); raw.Add(new Raw { Id = 1, Time = DateTime.Now.AddSeconds(2), SubId = 2 }); raw.Add(new Raw { Id = 1, Time = DateTime.Now.AddSeconds(4), SubId = 3 }); raw.Add(new Raw { Id = 2, Time = DateTime.Now.AddSeconds(8), SubId = 1 }); raw.Add(new Raw { Id = 2, Time = DateTime.Now.AddSeconds(16), SubId = 2 }); raw.Add(new Raw { Id = 2, Time = DateTime.Now.AddSeconds(32), SubId = 3 }); foreach(Raw r in raw) { Console.WriteLine("{0} {1} {2}", r.Id, r.Time, r.SubId); } List<Processed> processed = RawToProcessed(raw); foreach(Processed p in processed) { Console.WriteLine("{0} {1} {2}", p.Id, p.Time, p.SubId); } Console.ReadKey(); } } }
men jeg er ikke helt klar over hvad du har og kan i din context.
Synes godt om
Slettet bruger
14. februar 2013 - 15:50#8
Det forstod jeg intet af- jeg ved ikke hvad du mener med kan og har?
ok - selvom jeg ikke rigtigt foeler at jeg har bidraget med noget
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.