Advertisement
Guest User

Untitled

a guest
May 29th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.78 KB | None | 0 0
  1. DECLARE @ID uniqueidentifier; SET @ID = '40f18650-76d7-4e31-967b-8caa86e013c2';
  2. DECLARE @UserID uniqueidentifier; SET @UserID = '3db19fa0-228a-497f-873a-0250bf0a4ccb';
  3. DECLARE @UtcNow datetime; SET @UtcNow = '2017-05-29T12:10:15';
  4. DECLARE @UtcNowQuants bigint;
  5. SELECT TOP(1) @UtcNowQuants = [QuantNumber]
  6. FROM [CalendarQuants] with(nolock)
  7. WHERE [StartTimeUTC] <= @UtcNow
  8. ORDER BY [StartTimeUTC] DESC;
  9.  
  10. SELECT
  11.     CAST (CASE WHEN [rup].[ID] IS NOT NULL AND [t].[UserID] IS NULL
  12.             OR [rd].[ID] IS NOT NULL
  13.             OR [t].[UserID] = @UserID
  14.         THEN 0
  15.         ELSE 1
  16.     END AS BIT) [IsLocked],
  17.     CAST (CASE WHEN [rup].[ID] IS NOT NULL
  18.             OR [rd].[ID] IS NOT NULL
  19.             OR [t].[UserID] = @UserID
  20.         THEN 1
  21.         ELSE 0
  22.     END AS BIT) [IsPerformer],
  23.     CAST (CASE WHEN [rup].[IsDeputy] = 1
  24.             OR [rd].[ID] IS NOT NULL
  25.         THEN 1
  26.         ELSE 0
  27.     END AS BIT) [IsPerformerDeputy],
  28.     CAST (CASE WHEN [rua].[ID] IS NOT NULL
  29.         THEN 1
  30.         ELSE 0
  31.     END AS BIT) [IsAuthor],
  32.     CAST (CASE WHEN [rua].[IsDeputy] = 1
  33.         THEN 1
  34.         ELSE 0
  35.     END AS BIT) [IsAuthorDeputy],
  36.     CAST (CASE WHEN [rd].[ID] IS NOT NULL
  37.             OR [t].[UserID] = @UserID
  38.         THEN 1
  39.         ELSE 0
  40.     END AS BIT) [IsCurrentPerformer],
  41.     CAST([cq].[QuantNumber] - @UtcNowQuants AS INT) [PlannedQuants],
  42.     [t].[RowID], [t].[Planned], [t].[InProgress], [t].[Created], [t].[Modified], [t].[TypeID],
  43.     [t].[StateID], [t].[RoleID], [t].[RoleName], [t].[RoleTypeID], [t].[UserID], [t].[UserName],
  44.     [t].[AuthorID], [t].[AuthorName], [t].[AuthorPosition], [t].[CreatedByID], [t].[CreatedByName],
  45.     [t].[ModifiedByID], [t].[ModifiedByName], [t].[HiddenFromAuthor], [t].[Digest], [t].[ParentID],
  46.     [t].[Postponed], [t].[PostponedTo], [t].[PostponeComment]
  47. FROM [Tasks] [t] with(nolock)
  48. LEFT JOIN [RoleUsers] [rup] with(nolock)
  49.     ON [rup].[ID] = [t].[RoleID]
  50.     AND [rup].[UserID] = @UserID
  51. LEFT JOIN [RoleUsers] [rua] with(nolock)
  52.     ON [rua].[ID] = [t].[AuthorID]
  53.     AND [rua].[UserID] = @UserID
  54. OUTER APPLY (
  55.     SELECT TOP(1) 1 as [ID]
  56.     FROM [RoleDeputies] [rd] with(nolock)
  57.     WHERE [rd].[DeputizedID] = [t].[UserID]
  58.     AND [rd].[ID] = [t].[RoleID]
  59.     AND [rd].[IsActive] = 1
  60.     AND [rd].[DeputyID] = @UserID
  61. ) [rd]
  62. OUTER APPLY (
  63.     SELECT TOP(1) [q].[QuantNumber]
  64.     FROM [CalendarQuants] [q] with(nolock)
  65.     WHERE [q].[StartTimeUTC] <= [t].[Planned]
  66.     ORDER BY [q].[StartTimeUTC] DESC
  67. ) [cq]
  68. WHERE [t].[ID] = @ID
  69.     AND (
  70.         [rup].[ID] IS NOT NULL
  71.         OR [rua].[ID] IS NOT NULL AND [t].[HiddenFromAuthor] = 0
  72.         OR [t].[UserID] = @UserID)
  73.     AND (
  74.         [t].[UserID] IS NULL
  75.         OR [rd].[ID] IS NOT NULL
  76.         OR [t].[UserID] = @UserID
  77.         OR [t].[AuthorID] = @UserID)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement