Advertisement
Guest User

Untitled

a guest
Jul 30th, 2014
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. CREATE TABLE [dbo].[PenData](
  2. [IDUkazatel] [smallint] NOT NULL,
  3. [Cas] [datetime2](0) NOT NULL,
  4. [Hodnota] [real] NULL,
  5. [HodnotaMax] [real] NULL,
  6. [HodnotaMin] [real] NULL,
  7. CONSTRAINT [PK_Data] PRIMARY KEY CLUSTERED
  8. (
  9. [IDUkazatel] ASC,
  10. [Cas] ASC
  11. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  12. ) ON [PRIMARY]
  13.  
  14. ALTER TABLE [dbo].[PenData] WITH NOCHECK ADD CONSTRAINT [FK_Data_Ukazatel] FOREIGN KEY([IDUkazatel])
  15. REFERENCES [dbo].[Ukazatel] ([IDUkazatel])
  16.  
  17. ALTER TABLE [dbo].[PenData] CHECK CONSTRAINT [FK_Data_Ukazatel]
  18.  
  19. DECLARE @t1 DATETIME;
  20. DECLARE @t2 DATETIME;
  21.  
  22. SET @t1 = GETDATE();
  23. SELECT min(cas) from PenData p WHERE IDUkazatel=24
  24. SELECT min(cas) from PenData p WHERE IDUkazatel=25
  25. SET @t2 = GETDATE();
  26. SELECT DATEDIFF(millisecond,@t1,@t2) AS elapsed_ms;
  27.  
  28.  
  29. SET @t1 = GETDATE();
  30. SELECT min(cas) from PenData p WHERE IDUkazatel=24 OR IDUkazatel=25
  31. SET @t2 = GETDATE();
  32. SELECT DATEDIFF(millisecond,@t1,@t2) AS elapsed_ms;
  33.  
  34. SELECT MIN(cas) from PenData p WHERE IDUkazatel IN (SELECT IDUkazatel FROM ...)
  35.  
  36. SELECT MIN(cas)
  37. FROM (
  38. SELECT cas=MIN(cas) FROM PenData p WHERE p.IDUkazatel = 24
  39. UNION ALL
  40. SELECT cas=MIN(cas) FROM PenData p WHERE p.IDUkazatel = 25
  41. ) AS minimums
  42.  
  43. SELECT
  44. MinCas = MIN(CA.PartialMinimum)
  45. FROM @T AS T
  46. CROSS APPLY
  47. (
  48. SELECT
  49. PartialMinimum = MIN(PD.Cas)
  50. FROM dbo.PenData AS PD
  51. WHERE
  52. PD.IDUkazatel = T.IDUkazatel
  53. ) AS CA;
  54.  
  55. SELECT MIN(cas) from PenData p WHERE IDUkazatel IN (...)
  56.  
  57. DECLARE @IDZapisovac int = 1
  58.  
  59. DECLARE @MinCas DateTime2(2) = NULL
  60. DECLARE @IDUkazatel smallint
  61. DECLARE @Cas DateTime2(2) = NULL
  62. DECLARE helper CURSOR FOR
  63. SELECT IDUkazatel FROM ...
  64. OPEN helper
  65. FETCH NEXT FROM helper INTO @IDUkazatel
  66. WHILE @@FETCH_STATUS = 0
  67. BEGIN
  68. SELECT @Cas = MIN(Cas) FROM PenData WHERE PenData.IDUkazatel=@IDUkazatel
  69. IF (@cas IS NOT NULL AND @cas<ISNULL(@MaxCas, '21000101'))
  70. SET @MinCas = @cas
  71. FETCH NEXT FROM helper INTO @IDUkazatel
  72. END
  73. CLOSE helper;
  74. DEALLOCATE helper;
  75. SELECT @MinCas
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement