Guest User

Выбор материалов для производства

a guest
Feb 11th, 2013
367
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.59 KB | None | 0 0
  1. USE ebs_DATADUMP;
  2. DECLARE @bpID int = (SELECT TOP 1 typeID FROM invTypes WHERE typeName LIKE 'Kronos Blueprint');
  3.  
  4. SELECT
  5.     bp.typeName 'Чертёж',
  6.     mat.typeName 'Материалы',
  7.     allData.quantity 'Количество',
  8.     allData.damagePerJob 'Повреждение материалов за цикл'
  9. FROM (
  10.     (SELECT
  11.         itm1.typeID,
  12.         1 AS activityID,
  13.         itm1.requiredTypeID,
  14.         (itm1.quantity-isnull(itm2.quantity,0)) as quantity,
  15.         1 AS damagePerJob,
  16.         1 AS wasted
  17.     FROM (
  18.         SELECT invBlueprintTypes.blueprintTypeID as typeID,
  19.             1 AS activityID,
  20.             invTypeMaterials.materialTypeID AS requiredTypeID,
  21.             invTypeMaterials.quantity as quantity,
  22.             1 AS damagePerJob,
  23.             1 AS wasted
  24.         FROM invTypeMaterials
  25.         INNER JOIN invBlueprintTypes
  26.             ON invTypeMaterials.typeID = invBlueprintTypes.productTypeID
  27.     ) as itm1
  28.     LEFT OUTER JOIN (
  29.         SELECT
  30.             t.typeID,
  31.             1 AS activityID,
  32.             itm.materialTypeID as requiredTypeID,
  33.             (itm.quantity * t.quantity) AS quantity,
  34.             1 AS damagePerJob,
  35.             1 AS wasted
  36.         FROM (
  37.             SELECT DISTINCT
  38.                 rtr.typeID,
  39.                 rtr.requiredTypeID,
  40.                 rtr.quantity
  41.             FROM ramTypeRequirements AS rtr
  42.             INNER JOIN invTypes AS iT
  43.                 ON rtr.requiredTypeID = iT.typeID
  44.             INNER JOIN invGroups AS iG
  45.                 ON iT.groupID = iG.groupID
  46.             WHERE ((rtr.activityID = 1) AND (rtr.recycle = 1) AND (iG.categoryID <> 4) AND (iG.categoryID <> 17))
  47.         ) AS t
  48.         INNER JOIN invTypeMaterials AS itm
  49.             ON t.requiredTypeID = itm.typeID
  50.     ) as itm2
  51.         on itm2.typeID = itm1.typeID and itm2.activityID = itm1.activityID and itm2.requiredTypeID = itm1.requiredTypeID
  52.     WHERE (itm1.quantity-isnull(itm2.quantity,0)) > 0)
  53.     UNION (
  54.         SELECT
  55.             rtr2.typeID,
  56.             rtr2.activityID,
  57.             rtr2.requiredTypeID,
  58.             rtr2.quantity,
  59.             rtr2.damagePerJob,
  60.             0 AS wasted
  61.         FROM ramTypeRequirements AS rtr2
  62.         INNER JOIN invTypes AS types
  63.             ON rtr2.requiredTypeID = types.typeID
  64.         INNER JOIN invBlueprintTypes AS bps
  65.             ON rtr2.typeID = bps.blueprintTypeID
  66.         INNER JOIN invGroups AS groups
  67.             ON types.groupID = groups.groupID
  68.         LEFT OUTER JOIN (
  69.             SELECT
  70.                 typeID,
  71.                 materialTypeID,
  72.                 quantity
  73.             FROM invTypeMaterials
  74.         ) AS itm
  75.             ON (bps.productTypeID = itm.typeID AND rtr2.requiredTypeID = itm.materialTypeID AND (rtr2.quantity <= itm.quantity OR rtr2.quantity > itm.quantity OR itm.quantity is null))
  76.         WHERE ((groups.categoryID <> 16) AND (rtr2.activityID = 1) AND (rtr2.quantity > 0))
  77.     )
  78. ) as allData
  79. INNER JOIN invTypes as mat
  80.     ON allData.requiredTypeID = mat.typeID
  81.     AND allData.typeID = @bpID
  82. INNER JOIN invTypes as bp
  83.     ON allData.typeID = bp.typeID
Advertisement
Add Comment
Please, Sign In to add comment