Advertisement
Guest User

Untitled

a guest
Apr 15th, 2010
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 8.38 KB | None | 0 0
  1. SELECT  Id,
  2.         COGCenter,
  3.         Location,
  4.         impel_timestamp,
  5.         postilion_timestamp,
  6.         ISNULL(impel_supply_value, 0) AS impel_supply_value,
  7.         ISNULL(postilion_supply_value, 0) AS postilion_supply_value,
  8.         ISNULL(trx, 0) AS trx,
  9.         ISNULL(zwr_value, 0) AS roz_impel,
  10.         ISNULL(previous_supply, 0) - ISNULL(trx, 0) AS roz_postilion,
  11.         ABS(ISNULL(previous_supply, 0) - ISNULL(trx, 0) - ISNULL(zwr_value, 0)) AS diff,
  12.         ( CASE ABS(ISNULL(previous_supply, 0) - ISNULL(trx, 0))
  13.             WHEN zwr_value THEN 'rozliczony'
  14.             ELSE CASE WHEN clar_id IS NULL THEN 'nierozliczony'
  15.                       ELSE 'wyjasniony'
  16.                  END
  17.           END ) AS roz_status,
  18.         ( CASE ISNULL(previous_supply, 0)
  19.             WHEN 0 THEN 0
  20.             ELSE ROUND(ISNULL(zwr_value, 0) / previous_supply, 4)
  21.           END ) AS wsp_impel,
  22.         ( CASE WHEN postilion_supply_value IS NOT NULL
  23.                     AND postilion_supply_value <> 0
  24.                THEN ISNULL(ROUND(( ISNULL(postilion_supply_value, 0)
  25.                                    - ISNULL(trx, 0) ) / postilion_supply_value,
  26.                                  4), 0)
  27.                ELSE 0
  28.           END ) AS wsp_postilion,
  29.         ( CASE WHEN previous_supply <> 0
  30.                     AND previous_supply IS NOT NULL
  31.                THEN CASE WHEN DATEDIFF(month, minimum_days, impel_timestamp) <= 3
  32.                          THEN CASE WHEN ( ROUND(ISNULL(zwr_value, 0)
  33.                                                 / previous_supply, 2) * 100 ) > 25
  34.                                    THEN 100 * ( ROUND(ISNULL(zwr_value, 0)
  35.                                                       / previous_supply, 2)
  36.                                                 * 100 - 25 )
  37.                                    ELSE 0
  38.                               END
  39.                          WHEN ( DATEDIFF(month, minimum_days, impel_timestamp) > 3
  40.                                 AND DATEDIFF(month, minimum_days,
  41.                                              impel_timestamp) <= 6
  42.                               )
  43.                          THEN CASE WHEN ( ROUND(ISNULL(zwr_value, 0)
  44.                                                 / ISNULL(previous_supply, 0),
  45.                                                 2) * 100 - 20 ) > 0
  46.                                    THEN 100 * ( ROUND(ISNULL(zwr_value, 0)
  47.                                                       / previous_supply, 2)
  48.                                                 * 100 - 20 )
  49.                                    ELSE 0
  50.                               END
  51.                          ELSE CASE WHEN ( ROUND(ISNULL(zwr_value, 0)
  52.                                                 / ISNULL(previous_supply, 0),
  53.                                                 2) * 100 - 15 ) * 100 > 0
  54.                                    THEN 100 * ( ROUND(ISNULL(zwr_value, 0)
  55.                                                       / previous_supply, 2)
  56.                                                 * 100 - 15 )
  57.                                    ELSE 0
  58.                               END
  59.                     END
  60.                ELSE 0
  61.           END ) AS impel_kara,
  62.         zwr_timestamp,
  63.         zwr_id,
  64.         ISNULL(zwr_value, 0) AS zwr_value,
  65.         TellerId
  66. FROM    ( SELECT    ( ( postilion.Cassette1Amount * ISNULL(machine.Cassette1,
  67.                                                            0)
  68.                         + postilion.Cassette2Amount * ISNULL(machine.Cassette2,
  69.                                                              0) )
  70.                       + postilion.Cassette3Amount * ISNULL(machine.Cassette3,
  71.                                                            0) )
  72.                     + postilion.Cassette4Amount * ISNULL(machine.Cassette4, 0) AS postilion_supply_value,
  73.                     impel.zas_value AS impel_supply_value,
  74.                     ISNULL(( SELECT SUM(Amount) AS Expr1
  75.                              FROM   dbo.TellerTransactions AS trx
  76.                              WHERE  ( TellerId = impel.TellerId )
  77.                                     AND ( Timestamp BETWEEN ISNULL(( SELECT MAX(Timestamp)
  78.                                                                      FROM   dbo.SupplyOperation AS impel_prev
  79.                                                                      WHERE  ( TellerId = impel.TellerId )
  80.                                                                             AND ( Timestamp < impel.zas_timestamp )
  81.                                                                             AND ( OperationType = 'ZAS' )
  82.                                                                    ), '1753-01-01')
  83.                                                     AND     impel.zas_timestamp )
  84.                            ), 0) AS trx,
  85.                     ISNULL(impel.Id, postilion.Id) as Id,
  86.                     ISNULL(impel.TellerId, postilion.TellerId) as TellerId,
  87.                     machine.Location,
  88.                     machine.COGCenter,
  89.                     impel.zas_timestamp AS impel_timestamp,
  90.                     postilion.CreatedAt AS postilion_timestamp,
  91.                     ISNULL(( SELECT TOP 1
  92.                                     pprev.OperationValue
  93.                              FROM   SupplyOperation pprev
  94.                              WHERE  pprev.TellerId = impel.tellerId
  95.                                     AND pprev.operationType = 'ZAS'
  96.                                     AND pprev.Timestamp < impel.zas_timestamp
  97.                              ORDER BY pprev.timestamp DESC
  98.                            ), 0) AS previous_supply,
  99.                     ( SELECT    MIN(Timestamp) AS Expr1
  100.                       FROM      [dbo].[TellerTransactions] AS transaction_min
  101.                       WHERE     ( TellerId = impel.TellerId )
  102.                     ) AS minimum_days,
  103.                     impel.zwr_timestamp,
  104.                     impel.zwr_id,
  105.                     impel.zwr_value,
  106.                     clar.Id AS clar_id
  107.           FROM      ( SELECT    zas.Id,
  108.                                 zas.TellerId,
  109.                                 zas.OperationValue AS zas_value,
  110.                                 zas.Timestamp AS zas_timestamp,
  111.                                 zwr.OperationValue AS zwr_value,
  112.                                 zwr.Timestamp AS zwr_timestamp,
  113.                                 zwr.Id AS zwr_id
  114.                       FROM      ( SELECT    zas.Id AS zas_id,
  115.                                             zas.Timestamp AS zas_date,
  116.                                             MAX(zwr.Timestamp) AS zwr_date
  117.                                   FROM      dbo.SupplyOperation AS zas
  118.                                             LEFT OUTER JOIN dbo.SupplyOperation
  119.                                             AS zwr ON zwr.TellerId = zas.TellerId
  120.                                                       AND zwr.Timestamp <= zas.Timestamp
  121.                                                       AND zwr.OperationType = 'ZWR'
  122.                                                       AND CONVERT(VARCHAR(10), zwr.Timestamp, 121) = CONVERT(VARCHAR(10), zas.Timestamp, 121)
  123.                                   WHERE     ( zas.OperationType = 'ZAS' )
  124.                                   GROUP BY  zas.Timestamp,
  125.                                             zas.Id
  126.                                 ) AS zas_zwr_pair
  127.                                 INNER JOIN dbo.SupplyOperation AS zas ON zas.Id = zas_zwr_pair.zas_id
  128.                                                                          AND zas.OperationType = 'zas'
  129.                                 LEFT OUTER JOIN dbo.SupplyOperation AS zwr ON zwr.TellerId = zas.TellerId
  130.                                                                               AND zwr.Timestamp = zas_zwr_pair.zwr_date
  131.                                                                               AND zwr.OperationType = 'zwr'
  132.                     ) AS impel
  133.                     FULL OUTER JOIN dbo.eServiceCashLevels AS postilion ON impel.TellerId = postilion.TellerId
  134.                                                                            AND impel.zas_timestamp = postilion.CreatedAt
  135.                     LEFT OUTER JOIN dbo.TellerMachine AS machine ON ISNULL(impel.TellerId, postilion.TellerId) = machine.Id
  136.                     LEFT OUTER JOIN dbo.SupplyClarifications AS clar ON clar.OperationId = impel.Id
  137.         ) AS tmp
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement