2012-08-30 38 views
0

我有8個查詢執行計算並將結果保存在其中一列中。從8個其他查詢獲取數據到相同結構的新查詢

每個查詢的列標題都遵循相同的結構;

CompanyYearAssetID, CompanyName, AssetName, Year, DatapointID, NameOfWhateverWasCalculated 

在每次計算中,將相同的DatapointID分配給結果。例如;

CompanyYearAssetID, CompanyName, AssetName, Year, DatapointID, ReservoirOIL 
10001    , CompanyA , Asset1 , 2011, 105014  , 5 
10002    , CompanyB , Asset1 , 2011, 105014  , 3 
10003    , CompanyC , Asset1 , 2011, 105014  , 0 

計算列的名稱及其DatapointID是;

  • UnallocatedOIL 105014
  • WellworkOIL 105015
  • ReservoirOIL 105016
  • AnnualShutdownOIL 105017
  • FailureUnplannedPlantOIL 105018
  • PlantPlannedMaintenanceOIL 105019
  • ExportOIL 105020
  • MarketOIL 105039

我想創建一個查詢來獲取所有結果到一個表最理想的是採用的列標題

CompanyYearAssetID, DatapointID, DatapointValue 

有沒有人有一個線索,我怎麼會這個結構?

只需要在這裏需要它們就是8個查詢名稱;

  1. PE_Field_UnallocatedOIL
  2. PE_Field_WellworkOIL
  3. PE_Field_ReservoirOIL
  4. PE_Field_AnnualShutdownOIL
  5. PE_Field_FailureUnplannedPlantOIL
  6. PE_Field_PlantPlannedMaintenanceOIL
  7. PE_Field_ExportOIL
  8. PE_Field_MarketOIL

回答

0

那麼,如果兩個查詢1和查詢2返回相同的數據,如該

CompanyYearAssetID, CompanyName, AssetName, Year, DatapointID, ReservoirOIL 
10001    , CompanyA , Asset1 , 2011, 105014  , 5 
10002    , CompanyB , Asset1 , 2011, 105014  , 3 
10003    , CompanyC , Asset1 , 2011, 105014  , 0 


SELECT * FROM (
    Select * from Query1 
    UNION ALL 
    Select * from Query2) 

所以這個查詢的結果將被

CompanyYearAssetID, CompanyName, AssetName, Year, DatapointID, ReservoirOIL 
10001    , CompanyA , Asset1 , 2011, 105014  , 5 
10002    , CompanyB , Asset1 , 2011, 105014  , 3 
10003    , CompanyC , Asset1 , 2011, 105014  , 0 
10001    , CompanyA , Asset1 , 2011, 105014  , 5 
10002    , CompanyB , Asset1 , 2011, 105014  , 3 
10003    , CompanyC , Asset1 , 2011, 105014  , 0 

它查詢像一個正常的表

SELECT * FROM (
     Select * from Query1 
     UNION ALL 
     Select * from Query2) 
where Year = 2011 AND ReservoirOIL > 0 
+0

從Q1到Q8結果相同的結構是必須的! – Marty

+0

wouldnt只是返回所有的列,因爲它們出現水平? – Magda

+0

哦,我明白了,讓我試試! – Magda