April 22, 2014 at 6:03 am
I'm a bit of a SQL newb but have been tasked with coming up with some code to retrieve values from a historian database. I'm retrieving the name of an object (tag) and its value at a specific time every month of the year. However, the year will be user defined parameter coming from a report. So if the user selects 2014 it should query on 1/1/2014,2/1/2014 and so on.
I came up with the simple part of the query which is looking up the tag names and associated values:
SELECT Tagname,value
From runtime.dbo.History
WHERE Tagname IN ('Tag1', 'Tag2')
and wwVersion = 'Latest'
and DateTime = @Date
Here are the issues I need to solve:
1. I can manually set the @Date but I'd like to have it do whats described above. I'm thinking some type of loop might be used?
2. I'm not sure how to output it into table format to look like:
Tag 1, (jan value), (feb value), (mar value), etc...
Tag 2, (jan value), (feb value), (mar value), etc...
Any help would be appreciated. Thanks!
April 22, 2014 at 8:32 am
You definitely don't need a loop for this. You can do this using a tally or a calendar table (not totally sure which one fits best). In order to help we will need a few things:
1. Sample DDL in the form of CREATE TABLE statements
2. Sample data in the form of INSERT INTO statements
3. Expected results based on the sample data
Please take a few minutes and read the first article in my signature for best practices when posting questions.
_______________________________________________________________
Need help? Help us help you.
Read the article at http://www.sqlservercentral.com/articles/Best+Practices/61537/ for best practices on asking questions.
Need to split a string? Try Jeff Modens splitter http://www.sqlservercentral.com/articles/Tally+Table/72993/.
Cross Tabs and Pivots, Part 1 – Converting Rows to Columns - http://www.sqlservercentral.com/articles/T-SQL/63681/
Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs - http://www.sqlservercentral.com/articles/Crosstab/65048/
Understanding and Using APPLY (Part 1) - http://www.sqlservercentral.com/articles/APPLY/69953/
Understanding and Using APPLY (Part 2) - http://www.sqlservercentral.com/articles/APPLY/69954/
September 11, 2014 at 10:32 pm
Can't tell exactly without the DDL as mentioned by Sean.
But as you said you need get all results when a user inputs a date and neet to search with Year part. One option is to do like this.
declare @date datetime;--'11-2-2014'
SELECT Tagname,value
From runtime.dbo.History
WHERE Tagname IN ('Tag1', 'Tag2')
and wwVersion = 'Latest'
and
DATEPART(YY,datetime)= DATEPART(YY,@date)
Viewing 3 posts - 1 through 2 (of 2 total)
You must be logged in to reply to this topic. Login to reply