2010-09-09 7 views
0

Comment convertir ce script SQL dynamique en LinqToSql?Comment convertir ce script SQL dynamique en LinqToSql?

-- Create sample table 

Create Table TEST 
(DATES Varchar(6), 
EMPNO Varchar(5), 
STYPE Varchar(1), 
AMOUNT Int) 

-- Insert sample data 

Insert TEST Select '200605', '02436',  'A',  5 
Union All Select '200605', '02436',  'B',  3 
Union All Select '200605', '02436',  'C',  3 
Union All Select '200605', '02436',  'D',  2 
Union All Select '200605', '02436',  'E',  9 
Union All Select '200605', '02436',  'F',  7 
Union All Select '200605', '02436',  'G',  6 
Union All Select '200605', '02438',  'A',  7 
Union All Select '200605', '02438',  'B',  8 
Union All Select '200605', '02438',  'C',  0 
Union All Select '200605', '02438',  'D',  3 
Union All Select '200605', '02438',  'E',  4 
Union All Select '200605', '02438',  'F',  5 
Union All Select '200605', '02438',  'G',  1 
GO 



-- the sql script which I want to convert into LinqToSql 

Declare @S Varchar(1000) 
Set @S='' 

Select @[email protected]+',SUM(Case STYPE When '''+STYPE+''' Then AMOUNT Else 0 End) As '+STYPE 
From (Select Distinct STYPE From TEST) A Order By STYPE 

Set @S='Select DATES,EMPNO'[email protected]+' From TEST Group By DATES,EMPNO Order By DATES,EMPNO' 
EXEC(@S) 
GO 

Répondre

0

Vous n'avez pas besoin de SQL dynamique pour calculer ces sommes. Cette requête calcule chaque nombre dont vous avez besoin.

SELECT Dates, EmpNo, SType, SUM(Amount) 
FROM Temp 
GROUP BY Dates, EmpNo, SType 
ORDER BY Dates, EmpNo, SType 

et il est facilement traduit en LinqToSql. Une fois que vous avez ces sommes en mémoire, alors vous pouvez faire le résultat qui vous plait.

+0

Ce résultat SQL n'est pas ce dont j'ai besoin. Je dois convertir les lignes de résultats en colonnes. – Mike108

+0

Vous n'avez pas besoin de la base de données pour le faire pour vous. –

+0

Salut, David B, pourriez-vous s'il vous plaît me montrer du code pour convertir les lignes de résultats en mémoire en colonnes? – Mike108

Questions connexes