Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
maarten.del
Starting Member
17 Posts |
Posted - 2009-08-06 : 08:50:13
|
| Hi, I want to make a query, i think only the sql-pro's can make. (And I'm not a pro)I have a table like this but much bigger:RtuTimestamp RtuName TagName MeasValue2009-08-06 08:30:00.000 st241 ST241ATE01F 1036232009-08-06 08:30:00.000 st144 ST144AWP01_AVG 290352009-08-06 08:30:00.000 st144 ST144ASA01_AVG 02009-08-06 08:30:00.000 st144 ST144AQD02_AVG 23032009-08-06 08:30:00.000 st144 ST144AQD01_AVG 65512,092009-08-06 08:30:00.000 st144 ST144AQA01_AVG 63425,132009-08-06 08:30:00.000 st144 ST144ADA01_AVG 3762009-08-06 08:30:00.000 st143 ST143AWP01_AVG 5,0104442009-08-06 08:30:00.000 st143 ST143ASA01_AVG 872009-08-06 08:30:00.000 st143 ST143AQD01_AVG 21,899992009-08-06 08:30:00.000 st143 ST143AQA01_AVG 18,122132009-08-06 08:30:00.000 st143 ST143ADA01_AVG 357,02222009-08-06 08:30:00.000 st141 ST141ASA01_AVG 12009-08-06 08:30:00.000 st141 ST141AQA01_AVG 0,57777782009-08-06 08:30:00.000 st141 ST141ADA11_AVG 6,780222Now I want a query that gives me:- RtuTimestamp, RtuName & Measvalue- Latest Measvalue in time (based on RtuTimestamp) for every day only for the past 10 days and for every Tagname like '%ATE%' (see first record)Can someone help me please?Thanks in advance |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2009-08-06 : 09:32:12
|
Are you using SQL Server 2000, 2005 or 2008? N 56°04'39.26"E 12°55'05.63" |
 |
|
|
maarten.del
Starting Member
17 Posts |
Posted - 2009-08-06 : 09:34:37
|
| 2005I found already something Select Distinct |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2009-08-06 : 09:52:10
|
[code]DECLARE @Sample TABLE ( RtuTimestamp DATETIME, RtuName VARCHAR(20), TagName VARCHAR(20), MeasValue DECIMAL(15, 8) )INSERT @SampleSELECT '2009-08-06 08:30', 'st241', 'ST241ATE01F', 103623 UNION ALLSELECT '2009-08-06 08:30', 'st144', 'ST144AWP01_AVG', 29035 UNION ALLSELECT '2009-08-06 08:30', 'st144', 'ST144ASA01_AVG', 0 UNION ALLSELECT '2009-08-06 08:30', 'st144', 'ST144AQD02_AVG', 2303 UNION ALLSELECT '2009-08-06 08:30', 'st144', 'ST144AQD01_AVG', 65512.09 UNION ALLSELECT '2009-08-06 08:30', 'st144', 'ST144AQA01_AVG', 63425.13 UNION ALLSELECT '2009-08-06 08:30', 'st144', 'ST144ADA01_AVG', 376 UNION ALLSELECT '2009-08-06 08:30', 'st143', 'ST143AWP01_AVG', 5.010444 UNION ALLSELECT '2009-08-06 08:30', 'st143', 'ST143ASA01_AVG', 87 UNION ALLSELECT '2009-08-06 08:30', 'st143', 'ST143AQD01_AVG', 21.89999 UNION ALLSELECT '2009-08-06 08:30', 'st143', 'ST143AQA01_AVG', 18.12213 UNION ALLSELECT '2009-08-06 08:30', 'st143', 'ST143ADA01_AVG', 357.0222 UNION ALLSELECT '2009-08-06 08:30', 'st141', 'ST141ASA01_AVG', 1 UNION ALLSELECT '2009-08-06 08:30', 'st141', 'ST141AQA01_AVG', 0.5777778 UNION ALLSELECT '2009-08-06 08:30', 'st141', 'ST141ADA11_AVG', 6.780222SELECT RtuTimeStamp, RtuName, MeasValueFROM ( SELECT RtuTimeStamp, RtuName, MeasValue, ROW_NUMBER() OVER (PARTITION BY DATEDIFF(DAY, 0, RtuTimeStamp) ORDER BY RtuTimeStamp DESC) AS recID FROM @Sample WHERE RtuTimeStamp >= DATEADD(DAY, DATEDIFF(DAY, 9, GETDATE()), 0) AND RtuTimeStamp < DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 1) AND TagName LIKE '%ATE%' ) AS dWHERE recID = 1[/code] N 56°04'39.26"E 12°55'05.63" |
 |
|
|
maarten.del
Starting Member
17 Posts |
Posted - 2009-08-07 : 04:08:05
|
| Hi,Thanks for the query!When i do this:--------------------------------------------------------select RtuTimeStamp, TagName, MeasValuefrom (select RtuTimeStamp, TagName, MeasValue, ROW_NUMBER() OVER (PARTITION BY DATEDIFF(DAY, 0, RtuTimeStamp) ORDER BY RtuTimeStamp DESC) AS recID from Hislog where RtuTimestamp >= DATEADD(Day, datediff(day, 9, getdate()), 0) and RtuTimestamp < Dateadd(day, datediff(day, 0, Getdate()),1) and TagName like '%ATE%' ) AS dwhere recID = 1--------------------------------------------------------Then i get this:2009-07-29 23:45:00.000 ST202ATE01F 56162009-07-30 23:45:00.000 ST202ATE01F 57452009-07-31 23:45:00.000 ST202ATE01F 58832009-08-01 23:45:00.000 ST202ATE01F 60242009-08-02 23:45:00.000 ST202ATE01F 61452009-08-03 23:45:00.000 ST203ATE01F 198342009-08-04 23:45:00.000 ST203ATE01F 208972009-08-05 23:45:00.000 ST202ATE01F 66352009-08-06 23:45:00.000 ST202ATE01F 67942009-08-07 08:45:00.000 ST203ATE01F 739This is very fine, but i need something elseNow i have for every day, the latest value of a tagname at random like '%ATE%'I want for every tagname like '%ATE%' every day the latest value. I think we need to turn it around. Now i have different days and multiple times ST202ATE01F.Now i want for every ST202ATE01F (or other tagname like '%ATE%') every day the latest value.I know its not very easy to understand (especially with my english) but the one who solves my query gets an imaginary statue.Thanks in advance |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2009-08-07 : 04:23:04
|
You get the latest record for every day, containing %ATE% N 56°04'39.26"E 12°55'05.63" |
 |
|
|
maarten.del
Starting Member
17 Posts |
Posted - 2009-08-07 : 04:37:10
|
| I changed your code and we are getting a step closer to the result.-----------------------------------------------------------select RtuTimeStamp, TagName, MeasValuefrom ( select RtuTimeStamp, TagName, MeasValue, ROW_NUMBER() OVER (PARTITION BY TagName ORDER BY RtuTimeStamp DESC) AS recID from Hislog where RtuTimestamp >= DATEADD(Day, datediff(day, 9, getdate()), 0) and RtuTimestamp < Dateadd(day, datediff(day, 1, Getdate()),1) and TagName like '%ATE%' ) AS dwhere recID = 1 order by Tagname-----------------------------------------------------------and i get this as result:-----------------------------------------------------------2009-08-06 23:45:00.000 ST202ATE01F 67942009-08-06 23:45:00.000 ST203ATE01F 4952009-08-06 23:45:00.000 ST204ATE01F 1888702009-08-06 23:45:00.000 ST205ATE01F 356592009-08-06 23:45:00.000 ST206ATE01F 615052009-08-06 06:15:00.000 ST206ATE01R 25812009-08-06 23:45:00.000 ST207ATE01F 1937162009-08-06 23:45:00.000 ST208ATE01F 253702009-08-05 15:30:00.000 ST209ATE01F 132009-08-06 23:45:00.000 ST211ATE01F 14682009-08-06 23:45:00.000 ST212ATE01F 1145352009-08-06 23:45:00.000 ST213ATE01F 655402009-08-06 23:45:00.000 ST214ATE01F 258452009-08-06 23:45:00.000 ST215ATE01F 343082009-08-06 23:45:00.000 ST216ATE01F 678742009-08-06 22:45:00.000 ST217ATE01F 122502009-08-06 23:45:00.000 ST218ATE01F 44432009-08-06 23:45:00.000 ST219ATE01R 657882009-08-06 23:45:00.000 ST220ATE01F 76022009-08-06 23:45:00.000 ST221ATE01F 37422009-08-06 23:45:00.000 ST222ATE01F 44592009-08-06 23:45:00.000 ST241ATE01F 1049402009-08-06 23:45:00.000 ST242ATE01F 1000882009-08-06 23:45:00.000 ST243ATE01F 537272009-08-06 23:45:00.000 ST244ATE01F 18778-----------------------------------------------------------Very good, but now i want the same result for 10 days before today. So the result must be 10 times longer then this query. You see that the lastest value it's almost always 23:45:00.000. |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2009-08-07 : 04:43:14
|
ROW_NUMBER() OVER (PARTITION BY TagName, DATEDIFF(DAY, 0, RtuTimeStamp) ORDER BY RtuTimeStamp DESC) AS recIDfrom Hislog N 56°04'39.26"E 12°55'05.63" |
 |
|
|
maarten.del
Starting Member
17 Posts |
Posted - 2009-08-07 : 04:49:15
|
| OMG,You solved my problem!!!Where do you work?Where do you want to get your imaginary statue?Thanks alot! |
 |
|
|
Transact Charlie
Master Smack Fu Yak Hacker
3451 Posts |
Posted - 2009-08-07 : 05:10:43
|
| Mail your imaginary statue to:N 56°04'39.26"E 12°55'05.63"I'm sure there is a mountain of them there already from other Lost Yaks!Charlie===============================================================Msg 3903, Level 16, State 1, Line 1736The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2009-08-07 : 06:58:10
|
http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=N+56%C2%B004'39.26%22,+E+12%C2%B055'05.63%22&sll=37.0625,-95.677068&sspn=39.507908,76.552734&ie=UTF8&t=h&z=16 N 56°04'39.26"E 12°55'05.63" |
 |
|
|
|
|
|
|
|