Hi Bitte lass mich wissen wie ich das konvertieren kannAbfrage an linq, eigentlich muss ich dynamische Pivot-Tabelle von SQL-Server erstellen Ich war mit dieser Abfrage fertig, aber ich kann diese Abfrage in meinem SQL-Server nicht als Ansicht oder Funktion speichern, usw. Ich möchte also Linq-Version dieser Abfrage verwenden mein Entity-Modus.
Tnx
DECLARE @ColumnsTable TABLE ([ColumnName] VARCHAR(50));
INSERT INTO @ColumnsTable ([ColumnName])
SELECT DISTINCT "[" + CONVERT(nvarchar(50), Unit) + "]"
FROM dbo.MeterValueView;
DECLARE @PivotColumns VARCHAR(MAX), @TotalColumn VARCHAR(MAX), @SQL VARCHAR(MAX);
SET @PivotColumns = (SELECT STUFF((SELECT DISTINCT ", " + CONVERT(nvarchar(50), [ColumnName])
FROM @ColumnsTable
FOR XML PATH("")), 1, 2, ""));
SET @TotalColumn = (SELECT STUFF((SELECT DISTINCT " + ISNULL(" + CONVERT(nvarchar(50), [ColumnName]) + ", 0)"
FROM @ColumnsTable
FOR XML PATH("")), 1, 3, ""));
SET @SQL = "SELECT *, (" + @TotalColumn + ") AS [Total]
FROM (SELECT [Serial],
[Unit],
[Value]
FROM [MeterValueView]) AS t
PIVOT (MAX([Value])
FOR [Unit] IN (" + @PivotColumns + ")) AS p;";
EXEC(@SQL)
Antworten:
0 für die Antwort № 1Ich finde einen einfachen Weg heraus, wie ich das Store-Verfahren ersetzen kann, um linq usw. zu ersetzen, um diesen Zweck zu erreichen:
CREATE PROC MeterValuesView
AS
BEGIN
DECLARE @ColumnsTable TABLE ([ColumnName] VARCHAR(50));
INSERT INTO @ColumnsTable ([ColumnName])
SELECT DISTINCT "[" + CONVERT(nvarchar(50), Unit) + "]"
FROM dbo.MeterValueView;
DECLARE @PivotColumns VARCHAR(MAX), @TotalColumn VARCHAR(MAX), @SQL VARCHAR(MAX);
SET @PivotColumns = (SELECT STUFF((SELECT DISTINCT ", " + CONVERT(nvarchar(50), [ColumnName])
FROM @ColumnsTable
FOR XML PATH("")), 1, 2, ""));
SET @TotalColumn = (SELECT STUFF((SELECT DISTINCT " + ISNULL(" + CONVERT(nvarchar(50), [ColumnName]) + ", 0)"
FROM @ColumnsTable
FOR XML PATH("")), 1, 3, ""));
SET @SQL = "SELECT *, (" + @TotalColumn + ") AS [Total]
FROM (SELECT [Serial],
[Unit],
[Value]
FROM [MeterValueView]) AS t
PIVOT (MAX([Value])
FOR [Unit] IN (" + @PivotColumns + ")) AS p;";
EXEC(@SQL)
END