Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
ismailc
Constraint Violating Yak Guru
290 Posts |
Posted - 2008-02-21 : 09:47:11
|
Hi, I need help on simplyfying this Update query!Select 'ITEM','NONE',rtrim(Grouped_Item),Run_Period,case when Item_Regrade = 'Y' then coalesce(V_RawMaterial_KgL_Cost_AvgCalc,0) --If Regrade then ClassAvgCostwhen Grouped_Item!=Item_Rollupthen coalesce(V_RawMaterial_KgL_Cost_Rollup,0) --If not Rollup then it gets the rollup costelse coalesce((V_Std.Milk+V_Std.Ingredients+V_Std.Transferred),0) --Else just gets the normal costend as V_RawMaterial_KgL_Cost,case when Item_Regrade = 'Y' then coalesce(V_Packaging_KgL_Cost_AvgCalc,0)when Grouped_Item!=Item_Rollupthen coalesce(V_Packaging_KgL_Cost_Rollup,0)else coalesce((V_Std.Packaging),0)end as V_Packaging_KgL_Cost,case when Item_Regrade = 'Y' then coalesce(V_DirectLabour_KgL_Cost_AvgCalc,0)when Grouped_Item!=Item_Rollupthen coalesce(V_DirectLabour_KgL_Cost_Rollup,0)else coalesce((V_Std.Labour),0)end as V_DirectLabour_KgL_Cost,case when Item_Regrade = 'Y' then coalesce(V_FactDepreciation_KgL_Cost_AvgCalc,0)when Grouped_Item!=Item_Rollupthen coalesce(V_FactDepreciation_KgL_Cost_Rollup,0)else coalesce((V_Std.Depreciation),0)end as V_FactDepreciation_KgL_Cost,case when Item_Regrade = 'Y' then coalesce(V_Energy_KgL_Cost_AvgCalc,0)when Grouped_Item!=Item_Rollupthen coalesce(V_Energy_KgL_Cost_Rollup,0)else coalesce((V_Std.Energy),0)end as V_Energy_KgL_Cost,case when Item_Regrade = 'Y' then coalesce(V_ProdFixedCosts_KgL_Cost_AvgCalc,0)when Grouped_Item!=Item_Rollupthen coalesce(V_ProdFixedCosts_KgL_Cost_Rollup,0)else coalesce((V_Std.FixedOH+V_Std.FixedDirOH),0)end as V_ProdFixedCosts_KgL_Cost,case when Item_Regrade = 'Y' then coalesce(V_ShippingAndWarehouse_KgL_Cost_AvgCalc,0)when Grouped_Item!=Item_Rollupthen coalesce(V_ShippingAndWarehouse_KgL_Cost_Rollup,0)else coalesce((V_Std.ShWhs),0)end as V_ShippingAndWarehouse_KgL_Cost,coalesce(V_Avg.Transport,0) as V_Transport_KgL_Cost,coalesce(V_Avg.DistributionCosts,0) as V_DistributionCosts_KgL_Cost,coalesce(V_Avg.Advertising,0) as V_Advertising_Perc_Cost,coalesce(V_Avg.Promotion,0) as V_Promotion_Perc_Cost,coalesce(V_Avg.PRSponsoring,0) as V_PrSponsoring_Perc_Cost,coalesce(V_Avg.GeneralExpenses,0) as V_GeneralExpenses_Perc_Cost,0,0from (Select Item as Grouped_Item from (Select Item from dbo.MIS_Actual_Cost_Staging_Avggroup by Itemunion allSelect Item from dbo.MIS_Actual_Cost_Staging_Stdgroup by Item)q1Group by Item)q2left join dbo.MIS_Actual_Cost_Staging_Std V_Std onV_Std.Item=Grouped_Itemleft join dbo.MIS_Actual_Cost_Staging_Avg V_Avg onV_Avg.Item=Grouped_Itemleft join dbo.MIS_Item_Attributes onItem_Code=Grouped_ItemLeft join (Select Item_Class as Item_Class_Avg,avg(V_RawMaterial_KgL_Cost) as V_RawMaterial_KgL_Cost_AvgCalc,avg(V_Packaging_KgL_Cost) as V_Packaging_KgL_Cost_AvgCalc,avg(V_DirectLabour_KgL_Cost) as V_DirectLabour_KgL_Cost_AvgCalc,avg(V_FactDepreciation_KgL_Cost) as V_FactDepreciation_KgL_Cost_AvgCalc,avg(V_Energy_KgL_Cost) as V_Energy_KgL_Cost_AvgCalc,avg(V_ProdFixedCosts_KgL_Cost) as V_ProdFixedCosts_KgL_Cost_AvgCalc,avg(V_ShippingAndWarehouse_KgL_Cost) as V_ShippingAndWarehouse_KgL_Cost_AvgCalcfrom(Select Item_Class,(V_Std.Milk+V_Std.Ingredients+V_Std.Transferred) as V_RawMaterial_KgL_Cost,V_Std.Packaging as V_Packaging_KgL_Cost,V_Std.Labour as V_DirectLabour_KgL_Cost,V_Std.Depreciation as V_FactDepreciation_KgL_Cost,V_Std.Energy as V_Energy_KgL_Cost,(V_Std.FixedOH+V_Std.FixedDirOH) as V_ProdFixedCosts_KgL_Cost,V_Std.ShWhs as V_ShippingAndWarehouse_KgL_Costfrom (Select Item as Grouped_Item from (Select Item from dbo.MIS_Actual_Cost_Staging_Avggroup by Itemunion allSelect Item from dbo.MIS_Actual_Cost_Staging_Stdgroup by Item)q1Group by Item)q2left join dbo.MIS_Actual_Cost_Staging_Std V_Std onV_Std.Item=Grouped_Itemleft join dbo.MIS_Actual_Cost_Staging_Avg V_Avg onV_Avg.Item=Grouped_Itemleft join dbo.MIS_Item_Attributes onItem_Code=Grouped_ItemWhere (V_Std.Milk+V_Std.Ingredients+V_Std.Transferred) is not null)q1Group by Item_Class)V_Class on V_Class.Item_Class_Avg=Item_Classleft join (Select Item as CostRollupItem,(V_Std.Milk+V_Std.Ingredients+V_Std.Transferred) as V_RawMaterial_KgL_Cost_Rollup,V_Std.Packaging as V_Packaging_KgL_Cost_Rollup,V_Std.Labour as V_DirectLabour_KgL_Cost_Rollup,V_Std.Depreciation as V_FactDepreciation_KgL_Cost_Rollup,V_Std.Energy as V_Energy_KgL_Cost_Rollup,(V_Std.FixedOH+V_Std.FixedDirOH) as V_ProdFixedCosts_KgL_Cost_Rollup,V_Std.ShWhs as V_ShippingAndWarehouse_KgL_Cost_Rollupfrom dbo.MIS_Actual_Cost_Staging_Std V_Stdleft join dbo.MIS_Item_Attributes onItem_Code=Itemwhere Item=Item_Rollup)V_Rollup onCostRollupItem=Item_RollupLeft join dbo.MIS_System_Parameters onRun_Type='DAILY_COST' left join(Select V_Main.Item as ItemMax,V_Main.RawMaterial_KgL_Cost as Cost from dbo.MIS_Actual_Cost_Daily_Measures V_Mainleft join (Select Item, max(Period) as V_Max_Periodfrom dbo.MIS_Actual_Cost_Daily_Measureswhere COSTTYPE='ITEM'and RawMaterial_KgL_Cost !=0Group by Item)q1 on q1.Item=V_Main.Itemand V_Max_Period=PeriodWhere V_Max_Period is not null)Q_RawMaterial_KgL_Cost on ItemMax=Grouped_Itemleft join(Select V_Main.Item as ItemMax,V_Main.Packaging_KgL_Cost as Cost from dbo.MIS_Actual_Cost_Daily_Measures V_Mainleft join (Select Item, max(Period) as V_Max_Periodfrom dbo.MIS_Actual_Cost_Daily_Measureswhere COSTTYPE='ITEM'and Packaging_KgL_Cost !=0Group by Item)q1 on q1.Item=V_Main.Itemand V_Max_Period=PeriodWhere V_Max_Period is not null)Q_Packaging_KgL_Cost on Q_Packaging_KgL_Cost.ItemMax=Grouped_Item--left join(Select V_Main.Item as ItemMax,V_Main.DirectLabour_KgL_Cost as Cost from dbo.MIS_Actual_Cost_Daily_Measures V_Mainleft join (Select Item, max(Period) as V_Max_Periodfrom dbo.MIS_Actual_Cost_Daily_Measureswhere COSTTYPE='ITEM'and DirectLabour_KgL_Cost !=0Group by Item)q1 on q1.Item=V_Main.Itemand V_Max_Period=PeriodWhere V_Max_Period is not null)Q_DirectLabour_KgL_Cost on Q_DirectLabour_KgL_Cost.ItemMax=Grouped_Item--left join(Select V_Main.Item as ItemMax,V_Main.Energy_KgL_Cost as Cost from dbo.MIS_Actual_Cost_Daily_Measures V_Mainleft join (Select Item, max(Period) as V_Max_Periodfrom dbo.MIS_Actual_Cost_Daily_Measureswhere COSTTYPE='ITEM'and Energy_KgL_Cost !=0Group by Item)q1 on q1.Item=V_Main.Itemand V_Max_Period=PeriodWhere V_Max_Period is not null)Q_Energy_KgL_Cost on Q_Energy_KgL_Cost.ItemMax=Grouped_Item--left join(Select V_Main.Item as ItemMax,V_Main.Transport_KgL_Cost as Cost from dbo.MIS_Actual_Cost_Daily_Measures V_Mainleft join (Select Item, max(Period) as V_Max_Periodfrom dbo.MIS_Actual_Cost_Daily_Measureswhere COSTTYPE='ITEM'and Transport_KgL_Cost !=0Group by Item)q1 on q1.Item=V_Main.Itemand V_Max_Period=PeriodWhere V_Max_Period is not null)Q_Transport_KgL_Cost on Q_Transport_KgL_Cost.ItemMax=Grouped_Item--left join(Select V_Main.Item as ItemMax,V_Main.DistributionCosts_KgL_Cost as Cost from dbo.MIS_Actual_Cost_Daily_Measures V_Mainleft join (Select Item, max(Period) as V_Max_Periodfrom dbo.MIS_Actual_Cost_Daily_Measureswhere COSTTYPE='ITEM'and DistributionCosts_KgL_Cost !=0Group by Item)q1 on q1.Item=V_Main.Itemand V_Max_Period=PeriodWhere V_Max_Period is not null)Q_DistributionCosts_KgL_Cost on Q_DistributionCosts_KgL_Cost.ItemMax=Grouped_Item--left join(Select V_Main.Item as ItemMax,V_Main.FactDepreciation_KgL_Cost as Cost from dbo.MIS_Actual_Cost_Daily_Measures V_Mainleft join (Select Item, max(Period) as V_Max_Periodfrom dbo.MIS_Actual_Cost_Daily_Measureswhere COSTTYPE='ITEM'and FactDepreciation_KgL_Cost !=0Group by Item)q1 on q1.Item=V_Main.Itemand V_Max_Period=PeriodWhere V_Max_Period is not null)Q_FactDepreciation_KgL_Cost on Q_FactDepreciation_KgL_Cost.ItemMax=Grouped_Item--left join(Select V_Main.Item as ItemMax,V_Main.ProdFixedCosts_KgL_Cost as Cost from dbo.MIS_Actual_Cost_Daily_Measures V_Mainleft join (Select Item, max(Period) as V_Max_Periodfrom dbo.MIS_Actual_Cost_Daily_Measureswhere COSTTYPE='ITEM'and ProdFixedCosts_KgL_Cost !=0Group by Item)q1 on q1.Item=V_Main.Itemand V_Max_Period=PeriodWhere V_Max_Period is not null)Q_ProdFixedCosts_KgL_Cost on Q_ProdFixedCosts_KgL_Cost.ItemMax=Grouped_Item--left join(Select V_Main.Item as ItemMax,V_Main.Advertising_Perc_Cost as Cost from dbo.MIS_Actual_Cost_Daily_Measures V_Mainleft join (Select Item, max(Period) as V_Max_Periodfrom dbo.MIS_Actual_Cost_Daily_Measureswhere COSTTYPE='ITEM'and Advertising_Perc_Cost !=0Group by Item)q1 on q1.Item=V_Main.Itemand V_Max_Period=PeriodWhere V_Max_Period is not null)Q_Advertising_Perc_Cost on Q_Advertising_Perc_Cost.ItemMax=Grouped_Item--left join(Select V_Main.Item as ItemMax,V_Main.Promotion_Perc_Cost as Cost from dbo.MIS_Actual_Cost_Daily_Measures V_Mainleft join (Select Item, max(Period) as V_Max_Periodfrom dbo.MIS_Actual_Cost_Daily_Measureswhere COSTTYPE='ITEM'and Promotion_Perc_Cost !=0Group by Item)q1 on q1.Item=V_Main.Itemand V_Max_Period=PeriodWhere V_Max_Period is not null)Q_Promotion_Perc_Cost on Q_Promotion_Perc_Cost.ItemMax=Grouped_Item--left join(Select V_Main.Item as ItemMax,V_Main.PrSponsoring_Perc_Cost as Cost from dbo.MIS_Actual_Cost_Daily_Measures V_Mainleft join (Select Item, max(Period) as V_Max_Periodfrom dbo.MIS_Actual_Cost_Daily_Measureswhere COSTTYPE='ITEM'and PrSponsoring_Perc_Cost !=0Group by Item)q1 on q1.Item=V_Main.Itemand V_Max_Period=PeriodWhere V_Max_Period is not null)Q_PrSponsoring_Perc_Cost on Q_PrSponsoring_Perc_Cost.ItemMax=Grouped_Item--left join(Select V_Main.Item as ItemMax,V_Main.GeneralExpenses_Perc_Cost as Cost from dbo.MIS_Actual_Cost_Daily_Measures V_Mainleft join (Select Item, max(Period) as V_Max_Periodfrom dbo.MIS_Actual_Cost_Daily_Measureswhere COSTTYPE='ITEM'and GeneralExpenses_Perc_Cost !=0Group by Item)q1 on q1.Item=V_Main.Itemand V_Max_Period=PeriodWhere V_Max_Period is not null)Q_GeneralExpenses_Perc_Cost on Q_GeneralExpenses_Perc_Cost.ItemMax=Grouped_Item Please Assist!Regards |
|
mrg
Starting Member
1 Post |
Posted - 2008-03-18 : 17:32:21
|
No. Do it yourself. |
|
|
willhaney
Starting Member
1 Post |
Posted - 2008-03-18 : 18:14:09
|
Made it to reddit:http://reddit.com/ |
|
|
dnask8
Starting Member
1 Post |
Posted - 2008-03-18 : 18:26:25
|
Get Jet Reports. |
|
|
spiderx
Starting Member
1 Post |
Posted - 2008-03-18 : 20:27:08
|
quote: I need help on simplyfying this Update query
This is not an "update query" it is a select query. What do you want to simplify? |
|
|
jimf
Master Smack Fu Yak Hacker
2875 Posts |
Posted - 2008-03-18 : 20:55:35
|
These posts are neither helpful nor humorous. If you're going to give somebody a hard time, at least be clever about it. Ismail, you know the drill -- DDLs, sample data, indexes, etc.Jim |
|
|
willpost
Starting Member
4 Posts |
Posted - 2008-03-18 : 21:00:47
|
[code]It appears to be for a Dairy or BakeryThe following is simplified by separating into SQL Server views.Based on your SQL, I made assumptions for the following tables:MIS_Actual_Cost_Daily_MeasuresItem varchar 10COSTTYPE varchar 10Period int 4GeneralExpenses_Perc_Cost money 8PrSponsoring_Perc_Cost money 8Promotion_Perc_Cost money 8Advertising_Perc_Cost money 8ProdFixedCosts_KgL_Cost money 8FactDepreciation_KgL_Cost money 8DistributionCosts_KgL_Cost money 8Transport_KgL_Cost money 8Energy_KgL_Cost money 8DirectLabour_KgL_Cost money 8Packaging_KgL_Cost money 8RawMaterial_KgL_Cost money 8MIS_Actual_Cost_Staging_AvgItem varchar 10Transport money 8DistributionCosts money 8Advertising money 8Promotion money 8PRSponsoring money 10GeneralExpenses money 8MIS_Actual_Cost_Staging_StdItem varchar 10Item_Rollup varchar 10Milk money 8Ingredients money 8Transferred money 8Packaging money 8Labour money 8Depreciation money 8Energy money 8FixedOH money 8FixedDirOH money 8ShWhs money 8MIS_Item_AttributesItem varchar 10Item_Class varchar 10Item_Regrade varchar 1MIS_System_ParametersRun_Type varchar 10Run_Period varchar 10First, save the following as views with the corresponding namesqryMIS_ACDM_ExpensesSELECT Item, MAX(Period) AS V_MAX_PeriodFROM dbo.MIS_Actual_Cost_Daily_MeasuresWHERE (COSTTYPE='ITEM') AND (GeneralExpenses_Perc_Cost <> 0)GROUP BY ItemqryMIS_ACDM_SponsoringSELECT Item, MAX(Period) AS V_MAX_PeriodFROM dbo.MIS_Actual_Cost_Daily_MeasuresWHERE (COSTTYPE='ITEM') AND (PrSponsoring_Perc_Cost <> 0)GROUP BY ItemqryMIS_ACDM_PromotionSELECT Item, MAX(Period) AS V_MAX_PeriodFROM dbo.MIS_Actual_Cost_Daily_MeasuresWHERE (COSTTYPE='ITEM') AND (Promotion_Perc_Cost <> 0)GROUP BY ItemqryMIS_ACDM_AdvertisingSELECT Item, MAX(Period) AS V_MAX_PeriodFROM dbo.MIS_Actual_Cost_Daily_MeasuresWHERE (COSTTYPE='ITEM') AND (Advertising_Perc_Cost <> 0)GROUP BY ItemqryMIS_ACDM_FixedCostsSELECT Item, MAX(Period) AS V_MAX_PeriodFROM dbo.MIS_Actual_Cost_Daily_MeasuresWHERE (COSTTYPE='ITEM') AND (ProdFixedCosts_KgL_Cost <> 0)GROUP BY ItemqryMIS_ACDM_DepreciationSELECT Item, MAX(Period) AS V_MAX_PeriodFROM dbo.MIS_Actual_Cost_Daily_MeasuresWHERE (COSTTYPE='ITEM') AND (FactDepreciation_KgL_Cost <> 0)GROUP BY ItemqryMIS_ACDM_DistributionSELECT Item, MAX(Period) AS V_MAX_PeriodFROM dbo.MIS_Actual_Cost_Daily_MeasuresWHERE (COSTTYPE='ITEM') AND (DistributionCosts_KgL_Cost <> 0)GROUP BY ItemqryMIS_ACDM_TransportSELECT Item, MAX(Period) AS V_MAX_PeriodFROM dbo.MIS_Actual_Cost_Daily_MeasuresWHERE (COSTTYPE='ITEM') AND (Transport_KgL_Cost <> 0)GROUP BY ItemqryMIS_ACDM_EnergySELECT Item, MAX(Period) AS V_MAX_PeriodFROM dbo.MIS_Actual_Cost_Daily_MeasuresWHERE (COSTTYPE='ITEM') AND (Energy_KgL_Cost <> 0)GROUP BY ItemqryMIS_ACDM_DirectLabourSELECT Item, MAX(Period) AS V_MAX_PeriodFROM dbo.MIS_Actual_Cost_Daily_MeasuresWHERE (COSTTYPE='ITEM') AND (DirectLabour_KgL_Cost <> 0)GROUP BY ItemqryMIS_ACDM_PackagingSELECT Item, MAX(Period) AS V_MAX_PeriodFROM dbo.MIS_Actual_Cost_Daily_MeasuresWHERE (COSTTYPE='ITEM') AND (Packaging_KgL_Cost <> 0)GROUP BY ItemqryMIS_ACDM_RawMaterialSELECT Item, MAX(Period) AS V_MAX_PeriodFROM dbo.MIS_Actual_Cost_Daily_MeasuresWHERE (COSTTYPE='ITEM') AND (RawMaterial_KgL_Cost <> 0)GROUP BY ItemqryMIS_ACS_AvgStdSELECT ItemFROM dbo.MIS_Actual_Cost_Staging_AvgGROUP BY ItemUNION ALLSELECT ItemFROM dbo.MIS_Actual_Cost_Staging_StdGROUP BY ItemSecond, save the following as views with the corresponding namesqryMIS_ACDM_Expenses_CostSELECT dbo.MIS_Actual_Cost_Daily_Measures.Item AS ItemMax, dbo.MIS_Actual_Cost_Daily_Measures.GeneralExpenses_Perc_Cost As Cost, dbo.qryMIS_ACDM_Expenses.V_Max_PeriodFROM dbo.MIS_Actual_Cost_Daily_Measures LEFT OUTER JOIN dbo.qryMIS_ACDM_Expenses ON dbo.MIS_Actual_Cost_Daily_Measures.Item = dbo.qryMIS_ACDM_Expenses.Item AND dbo.MIS_Actual_Cost_Daily_Measures.Period = dbo.qryMIS_ACDM_Expenses.V_Max_PeriodWHERE (dbo.qryMIS_ACDM_Expenses.V_Max_Period IS NOT NULL)qryMIS_ACDM_Sponsoring_CostSELECT dbo.MIS_Actual_Cost_Daily_Measures.Item AS ItemMax, dbo.MIS_Actual_Cost_Daily_Measures.PrSponsoring_Perc_Cost As Cost, dbo.qryMIS_ACDM_Sponsoring.V_Max_PeriodFROM dbo.MIS_Actual_Cost_Daily_Measures LEFT OUTER JOIN dbo.qryMIS_ACDM_Sponsoring ON dbo.MIS_Actual_Cost_Daily_Measures.Item = dbo.qryMIS_ACDM_Sponsoring.Item AND dbo.MIS_Actual_Cost_Daily_Measures.Period = dbo.qryMIS_ACDM_Sponsoring.V_Max_PeriodWHERE (dbo.qryMIS_ACDM_Sponsoring.V_Max_Period IS NOT NULL)qryMIS_ACDM_Promotion_CostSELECT dbo.MIS_Actual_Cost_Daily_Measures.Item AS ItemMax, dbo.MIS_Actual_Cost_Daily_Measures.Promotion_Perc_Cost As Cost, dbo.qryMIS_ACDM_Promotion.V_Max_PeriodFROM dbo.MIS_Actual_Cost_Daily_Measures LEFT OUTER JOIN dbo.qryMIS_ACDM_Promotion ON dbo.MIS_Actual_Cost_Daily_Measures.Item = dbo.qryMIS_ACDM_Promotion.Item AND dbo.MIS_Actual_Cost_Daily_Measures.Period = dbo.qryMIS_ACDM_Promotion.V_Max_PeriodWHERE (dbo.qryMIS_ACDM_Promotion.V_Max_Period IS NOT NULL)qryMIS_ACDM_Advertising_CostSELECT dbo.MIS_Actual_Cost_Daily_Measures.Item AS ItemMax, dbo.MIS_Actual_Cost_Daily_Measures.Advertising_Perc_Cost As Cost, dbo.qryMIS_ACDM_Advertising.V_Max_PeriodFROM dbo.MIS_Actual_Cost_Daily_Measures LEFT OUTER JOIN dbo.qryMIS_ACDM_Advertising ON dbo.MIS_Actual_Cost_Daily_Measures.Item = dbo.qryMIS_ACDM_Advertising.Item AND dbo.MIS_Actual_Cost_Daily_Measures.Period = dbo.qryMIS_ACDM_Advertising.V_Max_PeriodWHERE (dbo.qryMIS_ACDM_Advertising.V_Max_Period IS NOT NULL)qryMIS_ACDM_FixedCosts_CostSELECT dbo.MIS_Actual_Cost_Daily_Measures.Item AS ItemMax, dbo.MIS_Actual_Cost_Daily_Measures.ProdFixedCosts_KgL_Cost As Cost, dbo.qryMIS_ACDM_FixedCosts.V_Max_PeriodFROM dbo.MIS_Actual_Cost_Daily_Measures LEFT OUTER JOIN dbo.qryMIS_ACDM_FixedCosts ON dbo.MIS_Actual_Cost_Daily_Measures.Item = dbo.qryMIS_ACDM_FixedCosts.Item AND dbo.MIS_Actual_Cost_Daily_Measures.Period = dbo.qryMIS_ACDM_FixedCosts.V_Max_PeriodWHERE (dbo.qryMIS_ACDM_FixedCosts.V_Max_Period IS NOT NULL)qryMIS_ACDM_Depreciation_CostSELECT dbo.MIS_Actual_Cost_Daily_Measures.Item AS ItemMax, dbo.MIS_Actual_Cost_Daily_Measures.FactDepreciation_KgL_Cost As Cost, dbo.qryMIS_ACDM_Depreciation.V_Max_PeriodFROM dbo.MIS_Actual_Cost_Daily_Measures LEFT OUTER JOIN dbo.qryMIS_ACDM_Depreciation ON dbo.MIS_Actual_Cost_Daily_Measures.Item = dbo.qryMIS_ACDM_Depreciation.Item AND dbo.MIS_Actual_Cost_Daily_Measures.Period = dbo.qryMIS_ACDM_Depreciation.V_Max_PeriodWHERE (dbo.qryMIS_ACDM_Depreciation.V_Max_Period IS NOT NULL)qryMIS_ACDM_Distribution_CostSELECT dbo.MIS_Actual_Cost_Daily_Measures.Item AS ItemMax, dbo.MIS_Actual_Cost_Daily_Measures.DistributionCosts_KgL_Cost As Cost, dbo.qryMIS_ACDM_Distribution.V_Max_PeriodFROM dbo.MIS_Actual_Cost_Daily_Measures LEFT OUTER JOIN dbo.qryMIS_ACDM_Distribution ON dbo.MIS_Actual_Cost_Daily_Measures.Item = dbo.qryMIS_ACDM_Distribution.Item AND dbo.MIS_Actual_Cost_Daily_Measures.Period = dbo.qryMIS_ACDM_Distribution.V_Max_PeriodWHERE (dbo.qryMIS_ACDM_Distribution.V_Max_Period IS NOT NULL)qryMIS_ACDM_Transport_CostSELECT dbo.MIS_Actual_Cost_Daily_Measures.Item AS ItemMax, dbo.MIS_Actual_Cost_Daily_Measures.Transport_KgL_Cost As Cost, dbo.qryMIS_ACDM_Transport.V_Max_PeriodFROM dbo.MIS_Actual_Cost_Daily_Measures LEFT OUTER JOIN dbo.qryMIS_ACDM_Transport ON dbo.MIS_Actual_Cost_Daily_Measures.Item = dbo.qryMIS_ACDM_Transport.Item AND dbo.MIS_Actual_Cost_Daily_Measures.Period = dbo.qryMIS_ACDM_Transport.V_Max_PeriodWHERE (dbo.qryMIS_ACDM_Transport.V_Max_Period IS NOT NULL)qryMIS_ACDM_Energy_CostSELECT dbo.MIS_Actual_Cost_Daily_Measures.Item AS ItemMax, dbo.MIS_Actual_Cost_Daily_Measures.Energy_KgL_Cost As Cost, dbo.qryMIS_ACDM_Energy.V_Max_PeriodFROM dbo.MIS_Actual_Cost_Daily_Measures LEFT OUTER JOIN dbo.qryMIS_ACDM_Energy ON dbo.MIS_Actual_Cost_Daily_Measures.Item = dbo.qryMIS_ACDM_Energy.Item AND dbo.MIS_Actual_Cost_Daily_Measures.Period = dbo.qryMIS_ACDM_Energy.V_Max_PeriodWHERE (dbo.qryMIS_ACDM_Energy.V_Max_Period IS NOT NULL)qryMIS_ACDM_DirectLabour_CostSELECT dbo.MIS_Actual_Cost_Daily_Measures.Item AS ItemMax, dbo.MIS_Actual_Cost_Daily_Measures.DirectLabour_KgL_Cost As Cost, dbo.qryMIS_ACDM_DirectLabour.V_Max_PeriodFROM dbo.MIS_Actual_Cost_Daily_Measures LEFT OUTER JOIN dbo.qryMIS_ACDM_DirectLabour ON dbo.MIS_Actual_Cost_Daily_Measures.Item = dbo.qryMIS_ACDM_DirectLabour.Item AND dbo.MIS_Actual_Cost_Daily_Measures.Period = dbo.qryMIS_ACDM_DirectLabour.V_Max_PeriodWHERE (dbo.qryMIS_ACDM_DirectLabour.V_Max_Period IS NOT NULL)qryMIS_ACDM_Packaging_CostSELECT dbo.MIS_Actual_Cost_Daily_Measures.Item AS ItemMax, dbo.MIS_Actual_Cost_Daily_Measures.Packaging_KgL_Cost AS Cost, dbo.qryMIS_ACDM_Packaging.V_Max_PeriodFROM dbo.MIS_Actual_Cost_Daily_Measures LEFT OUTER JOIN dbo.qryMIS_ACDM_Packaging ON dbo.MIS_Actual_Cost_Daily_Measures.Item = dbo.qryMIS_ACDM_Packaging.Item AND dbo.MIS_Actual_Cost_Daily_Measures.Period = dbo.qryMIS_ACDM_Packaging.V_Max_PeriodWHERE (dbo.qryMIS_ACDM_Packaging.V_Max_Period IS NOT NULL)qryMIS_ACDM_RawMaterial_CostSELECT dbo.MIS_Actual_Cost_Daily_Measures.Item AS ItemMax, dbo.MIS_Actual_Cost_Daily_Measures.RawMaterial_KgL_Cost As Cost, dbo.qryMIS_ACDM_RawMaterial.V_Max_PeriodFROM dbo.MIS_Actual_Cost_Daily_Measures LEFT OUTER JOIN dbo.qryMIS_ACDM_RawMaterial ON dbo.MIS_Actual_Cost_Daily_Measures.Item = dbo.qryMIS_ACDM_RawMaterial.Item AND dbo.MIS_Actual_Cost_Daily_Measures.Period = dbo.qryMIS_ACDM_RawMaterial.V_Max_PeriodWHERE (dbo.qryMIS_ACDM_RawMaterial.V_Max_Period IS NOT NULL)qryMIS_ACSSSELECT dbo.MIS_Actual_Cost_Staging_Std.Item AS CostRollupItem, dbo.MIS_Actual_Cost_Staging_Std.Milk + dbo.MIS_Actual_Cost_Staging_Std.Ingredients + dbo.MIS_Actual_Cost_Staging_Std.Transferred AS V_RawMaterial_KgL_Cost_Rollup, dbo.MIS_Actual_Cost_Staging_Std.Packaging AS V_Packaging_KgL_Cost_Rollup, dbo.MIS_Actual_Cost_Staging_Std.Labour AS V_DirectLabour_KgL_Cost_Rollup, dbo.MIS_Actual_Cost_Staging_Std.Depreciation AS V_FactDepreciation_KgL_Cost_Rollup, dbo.MIS_Actual_Cost_Staging_Std.Energy AS V_Energy_KgL_Cost_Rollup, dbo.MIS_Actual_Cost_Staging_Std.FixedOH + dbo.MIS_Actual_Cost_Staging_Std.FixedDirOH AS V_ProdFixedCosts_KgL_Cost_Rollup, dbo.MIS_Actual_Cost_Staging_Std.ShWhs AS V_ShippingAndWarehouse_KgL_Cost_RollupFROM dbo.MIS_Actual_Cost_Staging_Std LEFT OUTER JOIN dbo.MIS_Item_Attributes ON dbo.MIS_Actual_Cost_Staging_Std.Item = dbo.MIS_Item_Attributes.Item_CodeqryMIS_ACS_AvgStd_GroupSELECT Item AS Grouped_ItemFROM dbo.qryMIS_ACS_AvgStdGROUP BY ItemThird, save the following as views with the corresponding namesqryMIS_ACS_CostsSELECT dbo.MIS_Item_Attributes.Item_Class, dbo.MIS_Actual_Cost_Staging_Std.Milk + dbo.MIS_Actual_Cost_Staging_Std.Ingredients + dbo.MIS_Actual_Cost_Staging_Std.Transferred AS V_RawMaterial_KgL_Cost, dbo.MIS_Actual_Cost_Staging_Std.Packaging AS V_Packaging_KgL_Cost, dbo.MIS_Actual_Cost_Staging_Std.Labour AS V_DirectLabour_KgL_Cost, dbo.MIS_Actual_Cost_Staging_Std.Depreciation AS V_FactDepreciation_KgL_Cost, dbo.MIS_Actual_Cost_Staging_Std.Energy AS V_Energy_KgL_Cost, dbo.MIS_Actual_Cost_Staging_Std.FixedOH + dbo.MIS_Actual_Cost_Staging_Std.FixedDirOH AS V_ProdFixedCosts_KgL_Cost, dbo.MIS_Actual_Cost_Staging_Std.ShWhs AS V_ShippingAndWarehouse_KgL_CostFROM dbo.qryMIS_ACS_AvgStd_Group LEFT OUTER JOIN dbo.MIS_Item_Attributes ON dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item = dbo.MIS_Item_Attributes.Item_Code LEFT OUTER JOIN dbo.MIS_Actual_Cost_Staging_Std ON dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item = dbo.MIS_Actual_Cost_Staging_Std.Item LEFT OUTER JOIN dbo.MIS_Actual_Cost_Staging_Avg ON dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item = dbo.MIS_Actual_Cost_Staging_Avg.ItemWHERE (dbo.MIS_Actual_Cost_Staging_Std.Milk + dbo.MIS_Actual_Cost_Staging_Std.Ingredients + dbo.MIS_Actual_Cost_Staging_Std.Transferred IS NOT NULL)Fourth, save the following as views with the corresponding namesqryMIS_ACS_Costs_AvgSELECT Item_Class AS Item_Class_Avg, AVG(V_RawMaterial_KgL_Cost) AS V_RawMaterial_KgL_Cost_AvgCalc, AVG(V_Packaging_KgL_Cost) AS V_Packaging_KgL_Cost_AvgCalc, AVG(V_DirectLabour_KgL_Cost) AS V_DirectLabour_KgL_Cost_AvgCalc, AVG(V_FactDepreciation_KgL_Cost) AS V_FactDepreciation_KgL_Cost_AvgCalc, AVG(V_Energy_KgL_Cost) AS V_Energy_KgL_Cost_AvgCalc, AVG(V_ProdFixedCosts_KgL_Cost) AS V_ProdFixedCosts_KgL_Cost_AvgCalc, AVG(V_ShippingAndWarehouse_KgL_Cost) AS V_ShippingAndWarehouse_KgL_Cost_AvgCalcFROM dbo.qryMIS_ACS_CostsGROUP BY Item_ClassFifth, save the following as views with the corresponding namesqryMIS_ACS_Costs_ItemMaxSELECT dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item, dbo.MIS_Actual_Cost_Staging_Std.Item_Rollup, dbo.qryMIS_ACS_Costs_Avg.V_RawMaterial_KgL_Cost_AvgCalc, dbo.qryMIS_ACS_Costs_Avg.V_Packaging_KgL_Cost_AvgCalc, dbo.qryMIS_ACS_Costs_Avg.V_DirectLabour_KgL_Cost_AvgCalc, dbo.qryMIS_ACS_Costs_Avg.V_FactDepreciation_KgL_Cost_AvgCalc, dbo.qryMIS_ACS_Costs_Avg.V_Energy_KgL_Cost_AvgCalc, dbo.qryMIS_ACS_Costs_Avg.V_ProdFixedCosts_KgL_Cost_AvgCalc, dbo.qryMIS_ACS_Costs_Avg.V_ShippingAndWarehouse_KgL_Cost_AvgCalc, dbo.qryMIS_ACSS_Rollup.V_RawMaterial_KgL_Cost_Rollup, dbo.qryMIS_ACSS_Rollup.V_Packaging_KgL_Cost_Rollup, dbo.qryMIS_ACSS_Rollup.V_DirectLabour_KgL_Cost_Rollup, dbo.qryMIS_ACSS_Rollup.V_FactDepreciation_KgL_Cost_Rollup, dbo.qryMIS_ACSS_Rollup.V_Energy_KgL_Cost_Rollup, dbo.qryMIS_ACSS_Rollup.V_ProdFixedCosts_KgL_Cost_Rollup, dbo.qryMIS_ACSS_Rollup.V_ShippingAndWarehouse_KgL_Cost_Rollup, dbo.MIS_Actual_Cost_Staging_Std.Milk, dbo.MIS_Actual_Cost_Staging_Std.Ingredients, dbo.MIS_Actual_Cost_Staging_Std.Transferred, dbo.MIS_Actual_Cost_Staging_Std.Packaging, dbo.MIS_Actual_Cost_Staging_Std.Labour, dbo.MIS_Actual_Cost_Staging_Std.Depreciation, dbo.MIS_Actual_Cost_Staging_Std.Energy, dbo.MIS_Actual_Cost_Staging_Std.FixedOH, dbo.MIS_Actual_Cost_Staging_Std.FixedDirOH, dbo.MIS_Actual_Cost_Staging_Std.ShWhs, dbo.MIS_Actual_Cost_Staging_Avg.Transport, dbo.MIS_Actual_Cost_Staging_Avg.DistributionCosts, dbo.MIS_Actual_Cost_Staging_Avg.Advertising, dbo.MIS_Actual_Cost_Staging_Avg.Promotion, dbo.MIS_Actual_Cost_Staging_Avg.PRSponsoring, dbo.MIS_Actual_Cost_Staging_Avg.GeneralExpenses, dbo.MIS_System_Parameters.Run_PeriodFROM dbo.qryMIS_ACS_AvgStd_Group LEFT OUTER JOIN dbo.MIS_Actual_Cost_Staging_Std ON dbo.MIS_Actual_Cost_Staging_Std.Item = dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item LEFT OUTER JOIN dbo.MIS_Actual_Cost_Staging_Avg ON dbo.MIS_Actual_Cost_Staging_Avg.Item = dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item LEFT OUTER JOIN dbo.MIS_Item_Attributes ON dbo.MIS_Item_Attributes.Item_Code = dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item LEFT OUTER JOIN dbo.qryMIS_ACS_Costs_Avg ON dbo.qryMIS_ACS_Costs_Avg.Item_Class_Avg = dbo.MIS_Item_Attributes.Item_Class LEFT OUTER JOIN dbo.qryMIS_ACSS_Rollup ON dbo.qryMIS_ACSS_Rollup.CostRollupItem = dbo.MIS_Actual_Cost_Staging_Std.Item_Rollup LEFT OUTER JOIN dbo.qryMIS_ACDM_RawMaterial_Cost ON dbo.qryMIS_ACDM_RawMaterial_Cost.ItemMax = dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item LEFT OUTER JOIN dbo.qryMIS_ACDM_Packaging_Cost ON dbo.qryMIS_ACDM_Packaging_Cost.ItemMax = dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item LEFT OUTER JOIN dbo.qryMIS_ACDM_DirectLabour_Cost ON dbo.qryMIS_ACDM_DirectLabour_Cost.ItemMax = dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item LEFT OUTER JOIN dbo.qryMIS_ACDM_Energy_Cost ON dbo.qryMIS_ACDM_Energy_Cost.ItemMax = dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item LEFT OUTER JOIN dbo.qryMIS_ACDM_Transport_Cost ON dbo.qryMIS_ACDM_Transport_Cost.ItemMax = dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item LEFT OUTER JOIN dbo.qryMIS_ACDM_Distribution_Cost ON dbo.qryMIS_ACDM_Distribution_Cost.ItemMax = dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item LEFT OUTER JOIN dbo.qryMIS_ACDM_Depreciation_Cost ON dbo.qryMIS_ACDM_Depreciation_Cost.ItemMax = dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item LEFT OUTER JOIN dbo.qryMIS_ACDM_FixedCosts_Cost ON dbo.qryMIS_ACDM_FixedCosts_Cost.ItemMax = dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item LEFT OUTER JOIN dbo.qryMIS_ACDM_Advertising_Cost ON dbo.qryMIS_ACDM_Advertising_Cost.ItemMax = dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item LEFT OUTER JOIN dbo.qryMIS_ACDM_Promotion_Cost ON dbo.qryMIS_ACDM_Promotion_Cost.ItemMax = dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item LEFT OUTER JOIN dbo.qryMIS_ACDM_Sponsoring_Cost ON dbo.qryMIS_ACDM_Sponsoring_Cost.ItemMax = dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item LEFT OUTER JOIN dbo.qryMIS_ACDM_Expenses_Cost ON dbo.qryMIS_ACDM_Expenses_Cost.ItemMax = dbo.qryMIS_ACS_AvgStd_Group.Grouped_Item CROSS JOIN dbo.MIS_System_ParametersWHERE (dbo.MIS_System_Parameters.Run_Type = 'DAILY_COST')Your final query will probably look like the following:Select 'ITEM','NONE',rtrim(Grouped_Item),Run_Period,case when Item_Regrade = 'Y' then coalesce(V_RawMaterial_KgL_Cost_AvgCalc,0) If Regrade then ClassAvgCostwhen Grouped_Item!=Item_Rollupthen coalesce(V_RawMaterial_KgL_Cost_Rollup,0) If not Rollup then it gets the rollup costelse coalesce((Milk+Ingredients+Transferred),0) Else just gets the normal costend as V_RawMaterial_KgL_Cost,case when Item_Regrade = 'Y' then coalesce(V_Packaging_KgL_Cost_AvgCalc,0)when Grouped_Item!=Item_Rollupthen coalesce(V_Packaging_KgL_Cost_Rollup,0)else coalesce((Packaging),0)end as V_Packaging_KgL_Cost,case when Item_Regrade = 'Y' then coalesce(V_DirectLabour_KgL_Cost_AvgCalc,0)when Grouped_Item!=Item_Rollupthen coalesce(V_DirectLabour_KgL_Cost_Rollup,0)else coalesce((Labour),0)end as V_DirectLabour_KgL_Cost,case when Item_Regrade = 'Y' then coalesce(V_FactDepreciation_KgL_Cost_AvgCalc,0)when Grouped_Item!=Item_Rollupthen coalesce(V_FactDepreciation_KgL_Cost_Rollup,0)else coalesce((Depreciation),0)end as V_FactDepreciation_KgL_Cost,case when Item_Regrade = 'Y' then coalesce(V_Energy_KgL_Cost_AvgCalc,0)when Grouped_Item!=Item_Rollupthen coalesce(V_Energy_KgL_Cost_Rollup,0)else coalesce((Energy),0)end as V_Energy_KgL_Cost,case when Item_Regrade = 'Y' then coalesce(V_ProdFixedCosts_KgL_Cost_AvgCalc,0)when Grouped_Item!=Item_Rollupthen coalesce(V_ProdFixedCosts_KgL_Cost_Rollup,0)else coalesce((FixedOH+FixedDirOH),0)end as V_ProdFixedCosts_KgL_Cost,case when Item_Regrade = 'Y' then coalesce(V_ShippingAndWarehouse_KgL_Cost_AvgCalc,0)when Grouped_Item!=Item_Rollupthen coalesce(V_ShippingAndWarehouse_KgL_Cost_Rollup,0)else coalesce((ShWhs),0)end as V_ShippingAndWarehouse_KgL_Cost,coalesce(Transport,0) as V_Transport_KgL_Cost,coalesce(DistributionCosts,0) as V_DistributionCosts_KgL_Cost,coalesce(Advertising,0) as V_Advertising_Perc_Cost,coalesce(Promotion,0) as V_Promotion_Perc_Cost,coalesce(PRSponsoring,0) as V_PrSponsoring_Perc_Cost,coalesce(GeneralExpenses,0) as V_GeneralExpenses_Perc_Cost,0,0from qryMIS_ACS_Costs_ItemMaxI can't fully test any of this because I don't havethe specification for the original tables or any sample data and I don't have query analyzer installedto verify the IF and Case statements in the final partAt least it's enough to get things rolling.PS: None of the queries beginning with "qryMIS_ACDM_" appear to be used in the final calculations. That means about half of the original SQL (everything after the three blank lines) could probably be removed and it would still run the same.[/code] |
|
|
mysterystar
Starting Member
2 Posts |
Posted - 2008-03-19 : 01:32:38
|
Yeah I never understood why I made 50k as a database anaylst and later more as an administrator playing with select, update, insert, and delete. This reminds me that the work is stressful and usually actually done by consultants.I don't know if the helpful or humorous either after 12 years in the database industry, I have spent 5 mentally disabled.btw, if you do use an update query always update the base tables and not your new views and once you have views you can grant security better too!meanwhile i am going to trust my social security check.cuz yeah you might get fired if you dont get that done unless of courseyou take over securityharrybowyer@aol.com |
|
|
bbinsj
Starting Member
1 Post |
Posted - 2008-03-19 : 13:38:05
|
willpost - I'm extremely impressed with your response. I hope you are checking the message boards and will respond the next time I have a problem with SQL code! ismailc - have you thought about creating a stored procedure and calling functions and views (which willpost helpfully defined)? I can see a few areas, such as the coalesce statements that might work well in a function - mostly from a readability standpoint. |
|
|
|
|
|
|
|