/ / Jak przekonwertować to zapytanie na linq - sql, linq

Jak przekonwertować to zapytanie na linq - sql, linq

Cześć, daj mi znać, jak mogę to przekonwertowaćzapytanie do linq, tak naprawdę potrzebuję utworzyć dynamiczną tabelę przestawną z serwera sql, który został zrobiony z tym zapytaniem, ale nie mogę zapisać tego zapytania w moim serwerze sql takim samym jak widok lub funkcja lub itp., więc chcę użyć linzu veersion tego zapytania z mój tryb jednostki.

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)

Odpowiedzi:

0 dla odpowiedzi № 1

Dowiesz się w prosty sposób, w jaki sposób mogę użyć procedury sklepu, aby zastąpić linq itp., Aby uzyskać ten cel:

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