Advertisement
Guest User

Untitled

a guest
Apr 18th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 7.67 KB | None | 0 0
  1. insert into @allowed_location values (760481), (760479), (760478), (760477)
  2.  
  3. DECLARE @RETVAL TABLE ([ID_LOCATION] BIGINT, [LOCATION_NAME] SQL_VARIANT, [CID] SQL_VARIANT,
  4.     [CITY] SQL_VARIANT, [ADDRESS] SQL_VARIANT, [POST_CODE] SQL_VARIANT, [STATE] NVARCHAR(100), [DISTRIBUTOR] NVARCHAR(100), [EXCEPTION_LIST] NVARCHAR(MAX) DEFAULT(''), [ROW_TOOLTIP] NVARCHAR(MAX) DEFAULT(''))
  5.  
  6. DECLARE @METERS TABLE ([ID_METER] BIGINT, [ID_LOCATION] BIGINT)
  7.  
  8. DECLARE @ND1 NVARCHAR(50) = '<b>ND1</b> - Late delivery'
  9. DECLARE @ND2 NVARCHAR(50) = '<b>ND2</b> - Risk of late delivery'
  10. DECLARE @E1 NVARCHAR(50) = '<b>E1</b> - Missing data'
  11. DECLARE @E2 NVARCHAR(50) = '<b>E2</b> - Faulty device'
  12. DECLARE @E3 NVARCHAR(50) = '<b>E3</b> - Lost bank detection'
  13. DECLARE @E4 NVARCHAR(50) = '<b>E4</b> - Unauthorised cylinder exchanged'
  14. DECLARE @E5a NVARCHAR(50) = '<b>E5a</b> - Early delivery'
  15. DECLARE @E5b NVARCHAR(50) = '<b>E5b</b> - Delivery overdue'
  16. DECLARE @E5c NVARCHAR(50) = '<b>E5c</b> - No delivery planned'
  17. DECLARE @E6b NVARCHAR(50) = '<b>E6b</b> - Human interference: right to left know changed'
  18. DECLARE @E6a NVARCHAR(50) = '<b>E6a</b> - Human interference: left to right know changed'
  19. DECLARE @E7a NVARCHAR(50) = '<b>E7a</b> - Left bank active with empty sites'
  20. DECLARE @E7b NVARCHAR(50) = '<b>E7b</b> - Right bank active with empty sites'
  21. DECLARE @E8 NVARCHAR(50) = '<b>E8</b> - Left bank active no delivery detected'
  22. DECLARE @E9 NVARCHAR(50) = '<b>E9</b> - Right bank active no delivery detected'
  23.  
  24. INSERT INTO @RETVAL ([ID_LOCATION])
  25. SELECT DISTINCT [ID_LOCATION] FROM [LOCATION]
  26. WHERE ((SELECT COUNT(*) FROM @ALLOWED_LOCATION) = 0 OR [ID_LOCATION] IN (SELECT * FROM @ALLOWED_LOCATION))
  27. AND ((SELECT COUNT(*) FROM @ALLOWED_DISTRIBUTOR) = 0 OR [ID_DISTRIBUTOR] IN (SELECT * FROM @ALLOWED_DISTRIBUTOR))
  28. AND [ID_LOCATION_STATE_TYPE] IN (1,2,4,5,6)
  29. AND [ID_LOCATION_TYPE] = 1
  30.  
  31. INSERT INTO @METERS ([ID_METER], [ID_LOCATION])
  32. SELECT [ID_METER], [ID_LOCATION] FROM [LOCATION_EQUIPMENT] WHERE [ID_LOCATION] IN (SELECT [ID_LOCATION] FROM @RETVAL) AND END_TIME IS NULL AND [ID_METER] IS NOT NULL
  33.     AND ((SELECT COUNT(*) FROM @ALLOWED_METER) = 0 OR [ID_METER] IN (SELECT * FROM @ALLOWED_METER))
  34.  
  35. DECLARE @METER_WITH_PROBLEM TYPE_BIGINT_VALUE
  36. INSERT INTO @METER_WITH_PROBLEM ([VALUE])
  37. SELECT DISTINCT D.[ID_METER] FROM [IMR_Suite_DW].[DBO].[DATA] D WHERE D.[ID_DATA_TYPE] = 2053 AND D.[ID_METER] IN (SELECT [ID_METER] FROM @METERS)
  38. AND D.[ID_DATA] = (SELECT TOP 1 D2.[ID_DATA] FROM [IMR_Suite_DW].[DBO].[DATA] D2 WHERE D2.[ID_DATA_TYPE] = 2053 AND D2.[ID_METER] = D.[ID_METER] AND D.[VALUE] IS NOT NULL AND CAST(D.[VALUE] AS INT) = 1
  39. ORDER BY D2.[TIME] DESC)
  40.  
  41. DELETE FROM @RETVAL
  42. WHERE [ID_LOCATION] NOT IN (SELECT [ID_LOCATION] FROM @METERS WHERE ID_METER IN (SELECT [VALUE] FROM @METER_WITH_PROBLEM))
  43.  
  44. DECLARE @PROBLEMS TABLE ([ID_DATA] BIGINT, [ID_METER] BIGINT, [ID_LOCATION] BIGINT, [PROBLEM] INT)
  45. INSERT INTO @PROBLEMS ([ID_DATA], [ID_METER], [ID_LOCATION], [PROBLEM])
  46. SELECT D.[ID_DATA], D.[ID_METER], D.[ID_LOCATION], CAST(D.[VALUE] AS INT) FROM [IMR_Suite_DW].[DBO].[DATA] D
  47. WHERE D.[ID_LOCATION] IS NOT NULL AND D.[ID_LOCATION] IN (SELECT [ID_LOCATION] FROM @METERS WHERE ID_METER IN(SELECT [VALUE] FROM @METER_WITH_PROBLEM)) AND D.[ID_DATA_TYPE] = 101565
  48. AND D.[ID_DATA] = (SELECT TOP 1 D2.[ID_DATA] FROM [IMR_Suite_DW].[DBO].[DATA] D2  WHERE D2.[ID_DATA_TYPE] = 101565 AND D2.[INDEX_NBR] = D.[INDEX_NBR]
  49. AND D2.[ID_LOCATION] = D.[ID_LOCATION] AND D.[VALUE] IS NOT NULL
  50. AND ((SELECT COUNT(*) FROM @ALLOWED_METER) = 0 OR [ID_METER] IN (SELECT * FROM @ALLOWED_METER)) -- @ALLOWED_METER nie było uwzględniane w starym portalu
  51. ORDER BY D2.[TIME] DESC)
  52.  
  53. DECLARE @EXCEPTION_LIST_TMP TABLE (ID_LOCATION BIGINT, [VALUE] NVARCHAR(MAX))
  54. INSERT INTO @EXCEPTION_LIST_TMP (ID_LOCATION, [VALUE])
  55. SELECT P2.ID_LOCATION,
  56.     abc = STUFF(
  57.                  (SELECT ', ' +
  58.                  CASE
  59.                     WHEN [PROBLEM] = 46 THEN 'ND1'
  60.                     WHEN [PROBLEM] = 47 THEN 'ND2' 
  61.                     WHEN [PROBLEM] = 48 THEN 'E1'  
  62.                     WHEN [PROBLEM] = 49 THEN 'E2'  
  63.                     WHEN [PROBLEM] = 50 THEN 'E3'  
  64.                     WHEN [PROBLEM] = 51 THEN 'E4'  
  65.                     WHEN [PROBLEM] = 52 THEN 'E5a' 
  66.                     WHEN [PROBLEM] = 53 THEN 'E5b' 
  67.                     WHEN [PROBLEM] = 54 THEN 'E5c' 
  68.                     WHEN [PROBLEM] = 55 THEN 'E6b' 
  69.                     WHEN [PROBLEM] = 56 THEN 'E6a' 
  70.                     WHEN [PROBLEM] = 57 THEN 'E7a' 
  71.                     WHEN [PROBLEM] = 58 THEN 'E7b' 
  72.                     WHEN [PROBLEM] = 59 THEN 'E8'  
  73.                     WHEN [PROBLEM] = 60 THEN 'E9'      
  74.                 end
  75.                 FROM @PROBLEMS P1 WHERE P1.ID_LOCATION = P2.ID_LOCATION FOR XML PATH ('')), 1, 1, ''
  76.                )
  77. FROM @PROBLEMS P2 GROUP BY P2.ID_LOCATION
  78.  
  79. UPDATE
  80.     @RETVAL
  81. SET
  82.     EXCEPTION_LIST = T.[VALUE]
  83. FROM
  84.     @RETVAL L
  85.     INNER JOIN @EXCEPTION_LIST_TMP T
  86.         ON L.ID_LOCATION = T.ID_LOCATION
  87.  
  88. DECLARE @TOOLIP_TMP TABLE (ID_LOCATION BIGINT, [VALUE] NVARCHAR(MAX))
  89. INSERT INTO @TOOLIP_TMP (ID_LOCATION, [VALUE])
  90. SELECT P2.ID_LOCATION,
  91.     abc = STUFF(
  92.                  (SELECT '</BR>' +
  93.                  CASE
  94.                     WHEN [PROBLEM] = 46 THEN @ND1
  95.                     WHEN [PROBLEM] = 47 THEN @ND2
  96.                     WHEN [PROBLEM] = 48 THEN @E1
  97.                     WHEN [PROBLEM] = 49 THEN @E2
  98.                     WHEN [PROBLEM] = 50 THEN @E3
  99.                     WHEN [PROBLEM] = 51 THEN @E4
  100.                     WHEN [PROBLEM] = 52 THEN @E5a
  101.                     WHEN [PROBLEM] = 53 THEN @E5b
  102.                     WHEN [PROBLEM] = 54 THEN @E5c
  103.                     WHEN [PROBLEM] = 55 THEN @E6b
  104.                     WHEN [PROBLEM] = 56 THEN @E6a
  105.                     WHEN [PROBLEM] = 57 THEN @E7a
  106.                     WHEN [PROBLEM] = 58 THEN @E7b
  107.                     WHEN [PROBLEM] = 59 THEN @E8
  108.                     WHEN [PROBLEM] = 60 THEN @E9
  109.                 end
  110.                 FROM @PROBLEMS P1 WHERE P1.ID_LOCATION = P2.ID_LOCATION FOR XML PATH ('')), 1, 1, ''
  111.                )
  112. FROM @PROBLEMS P2 GROUP BY P2.ID_LOCATION
  113.  
  114. UPDATE
  115.     @RETVAL
  116. SET
  117.     ROW_TOOLTIP = REPLACE(REPLACE(REPLACE(T.[VALUE],'&lt;','<'),'&gt;','>'),'lt;','<')
  118. FROM
  119.     @RETVAL L
  120.     INNER JOIN @TOOLIP_TMP T
  121.         ON L.ID_LOCATION = T.ID_LOCATION
  122.        
  123. UPDATE @RETVAL SET [EXCEPTION_LIST] =
  124.     CASE
  125.         WHEN LEN([EXCEPTION_LIST]) > 0 THEN RIGHT([EXCEPTION_LIST], LEN([EXCEPTION_LIST]) - 1)
  126.     END
  127. WHERE [EXCEPTION_LIST] IS NOT NULL
  128.  
  129. UPDATE @RETVAL SET
  130.     [ROW_TOOLTIP] = '<p align="left">' +    
  131.     CASE
  132.         WHEN LEN([ROW_TOOLTIP]) > 4 THEN RIGHT([ROW_TOOLTIP], LEN([ROW_TOOLTIP]) - 5)
  133.     END + '</p>'
  134. WHERE [ROW_TOOLTIP] IS NOT NULL
  135.  
  136. -- LOCATION_NAME
  137. UPDATE @RETVAL SET [LOCATION_NAME] = D.[VALUE] FROM [DATA] D INNER JOIN @RETVAL L ON D.[ID_LOCATION] = L.[ID_LOCATION] WHERE D.[ID_DATA_TYPE] = 1
  138. -- CITY
  139. UPDATE @RETVAL SET [CITY] = D.[VALUE] FROM [DATA] D INNER JOIN @RETVAL L ON D.[ID_LOCATION] = L.[ID_LOCATION] WHERE D.[ID_DATA_TYPE] = 2
  140. -- ADDRESS
  141. UPDATE @RETVAL SET [ADDRESS] = D.[VALUE] FROM [DATA] D INNER JOIN @RETVAL L ON D.[ID_LOCATION] = L.[ID_LOCATION] WHERE D.[ID_DATA_TYPE] = 3
  142. -- ZIP
  143. UPDATE @RETVAL SET [POST_CODE] = D.[VALUE] FROM [DATA] D INNER JOIN @RETVAL L ON D.[ID_LOCATION] = L.[ID_LOCATION] WHERE D.[ID_DATA_TYPE] = 4
  144. -- CID
  145. UPDATE @RETVAL SET [CID] = D.[VALUE] FROM [DATA] D INNER JOIN @RETVAL L ON D.[ID_LOCATION] = L.[ID_LOCATION] WHERE D.[ID_DATA_TYPE] = 6
  146. -- LOCATION_STATE
  147. UPDATE @RETVAL SET [STATE] = (CASE WHEN DS.[DESCRIPTION] IS NOT NULL THEN DS.[DESCRIPTION] ELSE LST.[NAME] END) FROM [LOCATION] D INNER JOIN @RETVAL L ON D.[ID_LOCATION] = L.[ID_LOCATION]
  148.     INNER JOIN [LOCATION_STATE_TYPE] LST ON LST.ID_LOCATION_STATE_TYPE = D.ID_LOCATION_STATE_TYPE
  149.     INNER JOIN [DESCR] DS ON DS.ID_DESCR = LST.ID_DESCR WHERE DS.ID_LANGUAGE = @ID_LANGUAGE
  150. -- DISTRIBUTOR
  151. UPDATE @RETVAL SET [DISTRIBUTOR] = LST.[NAME] FROM [LOCATION] D INNER JOIN @RETVAL L ON D.[ID_LOCATION] = L.[ID_LOCATION]
  152.     INNER JOIN [DISTRIBUTOR] LST ON LST.ID_DISTRIBUTOR = D.ID_DISTRIBUTOR
  153.  
  154.  
  155. SELECT R.[LOCATION_NAME], R.[CID], R.[CITY], R.[ADDRESS], R.[POST_CODE], R.[STATE], r.[DISTRIBUTOR], R.[EXCEPTION_LIST], R.[ID_LOCATION], R.[ROW_TOOLTIP]
  156. FROM @RETVAL R
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement