2016-08-16 5 views
0

bekommen Ich habe zwei verschiedene Tabellen: Behälter & FillingStationsWie SQL Server 2008 R2 Daten in einer Spalte

In dem einen Tank zu viele fillingstations befestigt werden kann. Angenommen:

SrNo TankID TankName TANK_Balance FillingStation_ID  FS_NAme BALANCE 
1  1  Tank1  5000    A11    FSA11  1545 
2  1  Tank1  5000    A12    FSA12  1000 
3  1  Tank1  5000    A13    FSA13  800 

Und ich einen Bericht als wie erhalten mag:

SrNo TankID TankName TANK_Balance A11 BAL1 A12 BAL2 A13 BAL3 TOTAL 
1  1  Tank1  5000   FSA11 1545 FSA12 1000 FSA13 800 3345 
+0

Diese Frage soll verbessert werden: Fügen Sie Ihre Strukturen der tatsächlichen Tabelle und was Du hast es bisher versucht. Am besten war ein [Minimal-Complete-Überprüfbares-Beispiel] (http://stackoverflow.com/help/mcve). Benutze * copy'n'pasteable * code, benutze 'DECLARE @Tank Table (...)' oder 'CREATE TABLE #Tank (...)' um die Struktur zu definieren, fülle sie mit Beispieldaten ('INSERT INTO') . Sie könnten eine [SQL-Fiddle] (http://www.sqlfiddle.com) erstellen. In diesem Fall erhalten Sie die Antworten in Minutenschnelle ... – Shnugo

+0

Können Sie bitte mehr Licht auf die Frage ... Details der Geschäftsregeln usw. – singhswat

Antwort

0

wie diese versucht,

DECLARE @Table TABLE (
    SrNo INT 
    ,TankID INT 
    ,TankName VARCHAR(10) 
    ,TANK_Balance INT 
    ,FillingStation_ID VARCHAR(10) 
    ,FS_NAme VARCHAR(10) 
    ,BALANCE INT 
    ) 
insert into @Table values 
(1,1,'Tank1',5000,'A11','FSA11',1545) 
,(2,1,'Tank1',5000,'A12','FSA12',1000) 
,(3,1,'Tank1',5000,'A13','FSA13',800) 


SELECT min(SrNo) as SrNo, TankID 
    ,TankName 
    ,TANK_Balance 
    ,max([A11]) AS [A11] 
    ,max([BAL1]) AS [BAL1] 
    ,max([A12]) AS [A12] 
    ,max([BAL2]) AS [BAL2] 
    ,max([A13]) AS [A13] 
    ,max([BAL3]) AS [BAL3] 
    ,max([BAL1])+max([BAL2])+max([BAL3]) as Total 
FROM (
    SELECT SrNo,TankID 
     ,TankName 
     ,TANK_Balance 
     ,FillingStation_ID 
     ,replace(FillingStation_ID, 'A1', 'BAL') AS bFillingStation_ID 
     ,FS_NAme 
     ,BALANCE 
    FROM @Table 
    ) s 
pivot(Max(FS_NAme) FOR FillingStation_Id IN (
      [A11] 
      ,[A12] 
      ,[A13] 
      )) t 
pivot(Max(BALANCE) FOR bFillingStation_Id IN (
      [BAL1] 
      ,[BAL2] 
      ,[BAL3] 
      )) t1 
GROUP BY TankID 
    ,TankName 
    ,TANK_Balance 
Verwandte Themen