Ich suche, um unter SQL-Anweisung von LINQ zu erreichen. Ich bin mir nicht sicher ob es möglich ist? Kann mir dazu jemand Rat geben?Wie kann ich erreichen, SQL Pivot-Anweisung von LINQ
SELECT *
FROM (
SELECT CONVERT(VARCHAR, (DATEADD(WEEK, DATEDIFF(WEEK, 0, S.SampleDrawn), 0)), 101) [Date], [Range] =
CASE
WHEN ProbBacteremia >= 0 AND ProbBacteremia < 0.50 THEN 'Low'
WHEN ProbBacteremia >= 0.50 AND ProbBacteremia < 0.75 THEN 'Med'
ELSE 'High'
END
FROM Result.Calculation C INNER JOIN Data.SampleSet S ON C.SampleSetID = S.ID WHERE S.SampleDrawn >= DATEADD(WEEK,-1,GETDATE())) o
PIVOT
(
COUNT(o.[Range])
FOR [Range] IN (
[Low], [Med], [High])
) pt
ORDER BY [Date]
Ergebnis der obigen Abfrage wie unten
Date Low Med High 09/04/2017 370 174 175 09/11/2017 764 352 389 09/18/2017 759 384 360 09/25/2017 765 385 404 10/02/2017 115 48 56
Hinweis sein, dass oben Datum für Woche gruppiert hat. Ie. 09/04, 09/11, 09/18 usw. Ich habe viel recherchiert, aber ich fand nur nach Woche Nummer zu gruppieren.
Dies ist so weit wie ich mit LINQ kommen könnte, die mir die folgende Ergebnismenge zurückgeben wird.
data = (from a in context.Calculations
where a.SampleSet.SampleDrawn >= dtStart && (isDeptFilter || a.SampleSet.Department == location)
group a by new { Text = RangeProvider(a.ProbBacteremia * 100, riskCats), Date = a.SampleSet.SampleDrawn.Date } into groupedData
orderby groupedData.Key.Date ascending
select new { Value = groupedData.Count(), Text = groupedData.Key.Text, Date = groupedData.Key.Date.ToShortDateString() }).ToList();
public static string RangeProvider(int value)
{
if (value > 0 && value <= 25)
{ return "Low"; }
if (value > 25 && value <= 75)
{ return "Medium"; }
if (value > 75 && value <= 90)
{ return "High"; }
else
{ return "Very High"; }
}
Ergebnis Datensatz der obver LINQ ist
Date Text Value 09/04/2017 Low 65 09/04/2017 Med 80 09/04/2017 High 40 09/05/2017 Low 30 10/05/2017 Med 50 10/05/2017 High 44
Hoffnung das erklärt, was ich versuche zu erreichen. Kann mir bitte jemand dabei helfen?
gibt es keine native Pivot in Linq, aber Sie können Ihre eigene Gruppe gründen https://code.msdn.microsoft.com/windowsdesktop/CSEFPivotOperation-cbdd79db –
Dies ist einer dieser wiederkehrenden Fragen, die nie eine zufriedenstellende bekommen antworte, weil es keine gibt. –
OK ich verstehe. Weiß jemand, wie man nach dem oben angegebenen Wochenergebnis gruppiert? Verwenden von LINQ. –