2013-11-20 97 views
0

對不起,我英語不好。如何在SQL中的一行顯示多行結果?

我得到了一些結果。你可以在SS中看到。

我的查詢:

SELECT TransferOrderDate=Siparisler.datescheduled, 
     ProductTransferDate=UrunTransfer.daterealized, 
     FirmName=Bayi.firmname, 
     PlateOfTruck=UrunTransfer.plate, 
     DriverOfTruck=Surucu.name, 
     LatOfTruck=TankerKonum.lat, 
     LngOfTruck=TankerKonum.lng, 
     SpeedOfTruck=TankerKonum.speed, 
     LastUpdate=TankerKonum.readtime, 
     PrintID=UrunTransfer.printoutid 
FROM producttransfer AS UrunTransfer 
     JOIN transferorder AS Siparisler 
     ON Siparisler.oid = UrunTransfer.transferorderid 
     JOIN dealer AS Bayi 
     ON Bayi.oid = Siparisler.dealerid 
     JOIN driver AS Surucu 
     ON Surucu.oid = Siparisler.driverid 
     JOIN devcocom_admin.tankerlocation AS TankerKonum 
     ON TankerKonum.tankerid = Siparisler.tankerid 
WHERE UrunTransfer.daterealized > Dateadd(hour, -24, Getdate()) 
     AND TankerKonum.oid IN (SELECT Max(TankerKonum.oid) 
           FROM devcocom_admin.tankerlocation AS 
             TankerKonum 
           GROUP BY TankerKonum.tankerid) 

輸出是這樣的:

enter image description here

此查詢結果有3種不同的經銷商。但它有相同的truck,lat,lng,speed

在卷軸一truck工作一個或兩個或三個dealer。 我想在同一行顯示所有結果。

我怎樣才能改變結果我的查詢是這樣的:

enter image description here

TDName1:TransferDate for FirmName1 
TDName2:TransferDate for FirmName2 
TDName3:TransferDate for FirmName3 
PDName1 : ProductDate for FirmaName1 
PDName2 : ProductDate for FirmaName2 
PDName3 : ProductDate for FirmaName3 
+1

你可以看看使用PIVOT這裏描述http://stackoverflow.com/questions/10428993/understanding-pivot-function-in-t-sql和這裏http://stackoverflow.com/questions/24470/sql -server-pivot-examples或http://stackoverflow.com/questions/9830960/how-to-pivot-table-with-t-sql – Kane

+0

嘗試使用公用表表達式(CTE)。 樣品實施例是在這裏:[點擊這裏] [1] [1]:http://stackoverflow.com/questions/14274942/sql-server-cte-and-recursion-example –

回答

-2

假設你做你想做的。如果有一段時間4或更多的經銷商出現,該怎麼辦一般的解決方案是相同的GROUP BY列,對於你想要分割成3列的東西,我會用一些返回數組的聚合函數去。在psql中,它是array_agg。所以它看起來像:

SELECT a,b,c 
    , (array_agg(d order by a,b,c))[1] as d1 
    , (array_agg(d order by a,b,c))[2] as d2 
    , (array_agg(d order by a,b,c))[3] as d3 
FROM foo 
GROUP BY a,b,c 

祝你好運!

+0

不清楚對不起 – Mhmt

+0

東西像http://sqlfiddle.com/#!1/8d040/2/0 - 但這使用psql的array_agg函數。我不知道在ss2008中它的名字是什麼(如果有的話)。 – murison