Advertisement
Guest User

Untitled

a guest
Aug 1st, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 4.34 KB | None | 0 0
  1. USE [SIOEO_Dziekan]
  2. GO
  3. /****** Object:  StoredProcedure [egzamin].[proc_CKEPytanieArkuszaEgzaminacyjnegoList]    Script Date: 01.08.2018 10:24:25 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8.  
  9. -- =============================================
  10. -- Author:      Piotr Dziekanowski
  11. -- Create date: 27.07.2018
  12. -- Description: Zwraca listę pytań dla podanego arkusza egzaminacyjnego
  13. -- WorkItems: #8811
  14. -- =============================================
  15. ALTER PROCEDURE [egzamin].[proc_CKEPytanieArkuszaEgzaminacyjnegoList]
  16.     -- Add the parameters for the stored procedure here
  17.     @ArkuszEgzaminacyjnyID INT
  18. AS
  19. BEGIN
  20.     SET NOCOUNT ON;
  21.  
  22.     SELECT
  23.         *
  24.         ,(SELECT RazemPunktow FROM Pytania WHERE TypPytaniaID != 4)
  25.     FROM
  26.         (
  27.         SELECT DISTINCT
  28.             [PytanieArkuszaEgzaminacyjnego].ID
  29.             ,[PytanieArkuszaEgzaminacyjnego].Numer
  30.             ,[PytanieArkuszaEgzaminacyjnego].Etykieta
  31.             ,[PytanieArkuszaEgzaminacyjnego].IleWymaganychOdpowiedzi
  32.             ,[PytanieArkuszaEgzaminacyjnego].IdPytanieZalezne AS PytanieZalezneID
  33.             ,(SELECT [PytanieArkuszaEgzaminacyjnego].Etykieta FROM [PytanieArkuszaEgzaminacyjnego] WHERE ID = [PytanieArkuszaEgzaminacyjnego].IdPytanieZalezne) AS PytanieZalezneEtykieta
  34.             ,[TypPytania].ID AS TypPytaniaID
  35.             ,[TypPytania].Kod AS TypPytaniaKod
  36.             ,[TypPytania].Nazwa AS TypPytaniaNazwa
  37.             ,STUFF
  38.             (
  39.                 (
  40.                     SELECT DISTINCT
  41.                         N',' + [OdpowiedzNaPytanieArkuszaEgzaminacyjnego].Odpowiedz
  42.                     FROM
  43.                         [egzamin].[OdpowiedzNaPytanieArkuszaEgzaminacyjnego]
  44.                     WHERE
  45.                         [PytanieArkuszaEgzaminacyjnego].ID = [OdpowiedzNaPytanieArkuszaEgzaminacyjnego].IdPytanieArkuszaEgzaminacyjnego
  46.                     FOR XML PATH ('')
  47.                 ), 1, 1, ''
  48.             ) AS Dystraktory
  49.             ,STUFF
  50.             (
  51.                 (
  52.                     SELECT DISTINCT
  53.                         N',' + [OdpowiedzNaPytanieArkuszaEgzaminacyjnego].Odpowiedz
  54.                     FROM
  55.                         [egzamin].[OdpowiedzNaPytanieArkuszaEgzaminacyjnego]
  56.                     WHERE
  57.                         [PytanieArkuszaEgzaminacyjnego].ID = [OdpowiedzNaPytanieArkuszaEgzaminacyjnego].IdPytanieArkuszaEgzaminacyjnego
  58.                         AND [OdpowiedzNaPytanieArkuszaEgzaminacyjnego].CzyPoprawnaOdpowiedz = 1
  59.                     FOR XML PATH ('')
  60.                 ), 1, 1, ''
  61.             ) AS Poprawne
  62.             ,STUFF
  63.             (
  64.                 (
  65.                     SELECT DISTINCT
  66.                         N',' + CAST([OdpowiedzNaPytanieArkuszaEgzaminacyjnego].Punkty AS NVARCHAR)
  67.                     FROM
  68.                         [egzamin].[OdpowiedzNaPytanieArkuszaEgzaminacyjnego]
  69.                     WHERE
  70.                         [PytanieArkuszaEgzaminacyjnego].ID = [OdpowiedzNaPytanieArkuszaEgzaminacyjnego].IdPytanieArkuszaEgzaminacyjnego
  71.                         AND [OdpowiedzNaPytanieArkuszaEgzaminacyjnego].CzyPoprawnaOdpowiedz = 1
  72.                     FOR XML PATH ('')
  73.                 ), 1, 1, ''
  74.             ) AS Punkty
  75.             ,COALESCE(
  76.                 (SELECT SUM([OdpowiedzNaPytanieArkuszaEgzaminacyjnego].Punkty) FROM [OdpowiedzNaPytanieArkuszaEgzaminacyjnego] WHERE [OdpowiedzNaPytanieArkuszaEgzaminacyjnego].IdPytanieArkuszaEgzaminacyjnego = [PytanieArkuszaEgzaminacyjnego].ID AND ([PytanieArkuszaEgzaminacyjnego].IdTypPytania = 1 OR [PytanieArkuszaEgzaminacyjnego].IdTypPytania = 3))
  77.                 ,(SELECT MAX([OdpowiedzNaPytanieArkuszaEgzaminacyjnego].Punkty) FROM [OdpowiedzNaPytanieArkuszaEgzaminacyjnego] WHERE [OdpowiedzNaPytanieArkuszaEgzaminacyjnego].IdPytanieArkuszaEgzaminacyjnego = [PytanieArkuszaEgzaminacyjnego].ID AND ([PytanieArkuszaEgzaminacyjnego].IdTypPytania = 2 OR [PytanieArkuszaEgzaminacyjnego].IdTypPytania = 4))
  78.             ) AS RazemPunktow
  79.             ,[Egzamin].ID AS EgzaminID
  80.             ,[Egzamin].MaksymalnaLiczbaPunkow AS EgzaminMaksymalnaLiczbaPunkow
  81.             ,COUNT(*) OVER(PARTITION BY [PytanieArkuszaEgzaminacyjnego].ID) AS TotalCount
  82.         FROM
  83.             [egzamin].[PytanieArkuszaEgzaminacyjnego]
  84.             LEFT JOIN [egzamin].[OdpowiedzNaPytanieArkuszaEgzaminacyjnego] ON [PytanieArkuszaEgzaminacyjnego].ID = [OdpowiedzNaPytanieArkuszaEgzaminacyjnego].IdPytanieArkuszaEgzaminacyjnego
  85.             INNER JOIN [egzamin].[TypPytania] ON [PytanieArkuszaEgzaminacyjnego].IdTypPytania = [TypPytania].ID
  86.             INNER JOIN [egzamin].[WzorzecArkuszaEgzaminacyjnego] ON [PytanieArkuszaEgzaminacyjnego].IdWzorzecArkuszaEgzaminacyjnego = [WzorzecArkuszaEgzaminacyjnego].ID
  87.             INNER JOIN [egzamin].[ArkuszEgzaminacyjny] ON [WzorzecArkuszaEgzaminacyjnego].IdArkuszEgzaminacyjny = [ArkuszEgzaminacyjny].ID
  88.             INNER JOIN [egzamin].[Egzamin] ON [ArkuszEgzaminacyjny].IdEgzamin = [Egzamin].ID
  89.         WHERE
  90.             [ArkuszEgzaminacyjny].ID = @ArkuszEgzaminacyjnyID
  91.             AND [PytanieArkuszaEgzaminacyjnego].CzyUsuniety = 0
  92.             AND [OdpowiedzNaPytanieArkuszaEgzaminacyjnego].CzyUsuniety = 0
  93.     ) AS Pytania
  94. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement