/ / Wie konvertiert man diese Abfrage in linq - sql, linq

Wie konvertiert man diese Abfrage in linq - sql, linq

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 № 1

Ich 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