Question on SQL query
Hi guys. Running an SQL query through Query Generator in SBO, and I've come across something weird. I won't print the whole SQL query right now, but you can rest assured that both are completely identical, except for one conditional.
If I use a condition (MONTH(T1.DocDate) = MONTH(GETDATE())-1) i.e. return documents where the posting date is last month, my query returns 500+ results.
If I swap that condition with (T1.DocDate >= CONVERT(DATETIME, '20090501', 112) ) AND (T1.DocDate <= CONVERT(DATETIME, '20090531', 112) ) i.e. where the posting date is between the 1st and 31st of May, my query returns only 260 results.
For some reason, the second condition is excluding more results. Any general ideas on why? None of the records that are excluded fail the condition. They're all dated in May.
Anyway, this is non-critical. If we can't figure it out, I may throw up the full query.
Thanks again for any help.
James.
Hi Gordon,
You're right - the first criteria is pulling in records from May 2008 as well as 2009.
Thanks a lot.
James.
Edited by: JJSKenny on Jun 11, 2009 12:20 PM
Edited by: JJSKenny on Jun 11, 2009 12:35 PM
Similar Messages
-
Sql Query(Updateable Report) with pagination
Hi,
We're on APEX 3.2 I have a question on Sql Query(Updateable Report) and pagination. I have an updateable report which we have set to show 20 rows. When the userwhi has more than 20 rows enters the data and clicks next the data disappears. I have been reviewing other posts, but haven't come to a clear conclusion on how to prevent this from happening. I have been trying to use javascript to show a save popup when clicking 'Next' Any help is appreciated.
Thanks,
Joeany ideas?
-
SQL query problem with sorting
Hi,
I have question regarding sql query . Right now I am getting the results like this if i use this sql query
select ID,Name,Desc,Priority from emp order by Priority ;
Priority is varchar field. I don't want to change the Priority field and cannot add a new column in the table. Because i don't have permission to do that.
ID Name Desc Priority
=============================================
234 paul paul desc Highest
3452 mike mike desc High
4342 smith smith desc Low
6565 kelly kelly desc Low
9878 nate nate desc Medium
3223 deb deb desc High
============================================
I need a query to get the results like that.
ID Name Desc Priority
=============================================
234 paul paul desc Highest
3452 mike mike desc High
3223 deb deb desc High
9878 nate nate desc Medium
4342 smith smith desc Low
6565 kelly kelly desc Low
============================================
If any one knows about this one, please let me know.
Thanks,
BalaYou are aware that there are differences in the SQL implementation between Sqlserver and Oracle? You could try something like this, if there's a INSTR function:
ORDER BY INSTR('Highest,High,Medium,Low,', Priority || ',')You may have to change the "Priority || ," to a "Priority + ','), if string concatenation is done differently in sqlserver. Don't know about the ('), maybe you need (").
C. -
SQL query...pls help ASAP
Actor (Aname: varchar(40), Ano: varchar(6)) Ano is pk
Movie (Mname: varchar(40),mno: varchar(8)) Mno is pk
PlayIn (Ano, Mno, Pay: Integer) Ano and Mno are fk referencing Acotr and Movie respectively.
Actor(Aname, Ano)
A Bingo, A1
B Castro, A2
C Katie, A3
S Hommy, A4
J Tammy, A5
K loren, A6
Movie(Mname, Mno)
Gladiator, M1
Cast, M2
Dog, M3
Jilters, M4
PlayIn(Ano,Mno,Pay)
A1 M1 800
A1 M2 1500
A2 M2 78
A2 M3 1750
A2 M4 2301
A3 M2 904
A3 M3 629
A4 M2 565
A4 M3 5695
A4 M4 1255
A5 M1 989
A5 M4 238
A6 M2 137
A6 M3 236
A6 M4 545
QUESTION: write SQL query to find the names of actors who earned less than 'B Castro' in each movie that 'B Castro' played in.thanks so so much.....
another question:
for each movie, list the movie number, the average
pay and the total number of actors in the movie.....Rather than just asking homework questions and expecting everyone else to do your work for you, why don't you at least have a go at it yourself and post the query that you've tried, then we'll tell you where you are going wrong. You won't learn anything if we just write it for you.
Also, your use of "pls help ASAP" in the subject title is not polite.
This forum is manned by volunteers who have their own jobs and offer their help free of charge.
Everyone who posts an issue on here would love to have it answered as soon as possible, but nobody has the right to assume that their issue is any more important, urgent or requires a quicker answer than anybody elses.
If you need urgent help then you should pay someone to do the work for you. -
Question about using objects in SQL query.
I had posted this question in the SQL/PLSQL forum but I guess nobody took the time to understand exactly what I am asking so I decided to try here hoping to get the answer. So here is the thing:
I have created generic object type "tree" - the constructor takes as a parameter sql query which returns "node_id" and "parent_node_id" - this is all we need to have a tree. The object has all related to a tree structure member functions and one of them is "oldest_relative" (the tree may not be fully connected - it may be more like a set of many trees, so it's not necessary all nodes to have the same root).
I also have departments table with the following fields: department_id, parent_department_id, department_name,...
all records in the table w/out parent_departments (parent_department_id is null) are considered divisions.
Now if I run the following query:
SELECT "DEPARTMENT_ID", "PARENT_DEPARTMENT_ID", "DEPARTMENT_NAME", tree('select department_id "node_id", parent_department_id "parent_node_id" from departments').oldest_relative("DEPARTMENT_ID") "DIVISION_ID" FROM departments
my question is: Is the tree object created for every row or does Oracle somehow caches the object since the object itself is not changing but only the parameter for the oldest_relative member function.
The table only has a few hunderd records and I can't see much of a difference in the execution time btw the query above and query like this:
SELECT "DEPARTMENT_ID", "PARENT_DEPARTMENT_ID", "DEPARTMENT_NAME", b.t.oldest_relative("DEPARTMENT_ID") "DIVISION_ID"
FROM departments left join (select tree('select department_id "node_id", parent_department_id "parent_node_id" from departments') t from dual) b on 1 = 1
where the object is clearly created just ones. (there is probably a better way to do it instead of this join)
Pls elaborate
GeorgeNot exactly sure what the question is...
As I understand, you are comparing the following two constructor calls:
+select.. tree('select department_id "node_id", parent_department_id "parent_node_id" from departments').oldest_relative("DEPARTMENT_ID") ... FROM ...+
+select tree('select department_id "node_id", parent_department_id "parent_node_id" from departments') ... FROM dual+
These calls are the same (besides the 1st one doing an immediate implicit call to a method of the object being constructed). The number of times these are being called depends on the number of times this SQL projection is applied - and that is determined by the number of rows being projected by the SELECT.
The latter one is against DUAL which only has a single row. So that constructor is only called once. The former can be against multiple rows. Obviously a single pass through a data set is desirable - which means that the sub-select (use by the constructor) should ideally only be executed once and makes the 2nd method more desirable.
However, I'm having a hard time understanding why the class and constructor are at all needed. Why pull data from a SQL table into PL memory? As that is where the class will need to cache and store the results of that construction parameter SQL SELECT. And once in PL memory, how does the object effectively access, search and use this cached data?
PL memory is expensive. It is not sharable.
PL data structures are primitive - these cannot be compared to SQL structures in the form of tables and columns that can be stored in a number of physical ways (index tables, hash tables, partitioned tables, clustered tables, etc). Cannot be indexed like SQL structures using B+tree, bitmap, function and other indexing methods. Cannot be sorted, grouped, analysed, filtered, etc like SQL structured data.
It makes very little sense to read SQL data into a class and then deal with that data, cached in expensive PL memory, using primitive PL structures.
And the same would be true if Java or C# was used. The best place for data is inside the SQL engine. That is the most superior environment for data. It can processes more data, scale better, perform better and offer more flexibility, than pulling data from it and then crunch that data using PL or Java or C#. -
SQL Query returns question marks
I am seeing a SQL Query, executed via ADODB in VB, from a 10G client (don't know exact version) to a Sun Solaris based 9.2.0.5.0 Server return all question marks...Table queried consists of 3 columns, 2 varchar2, one long: Here query:
SELECT SETTINGVALUE FROM EWORKFLO.CONFIG WHERE SETTINGGROUP='New test' AND SETTINGNAME='Single Page'
The query results in 2576 question marks...(????? etc).
Any idea what may be going on here?
Thanks...
LeendertHello Tak,
Thanks for replying. When this query is run from SQLPLUS we get a proper result back, that is the actual values from the SETTINGVALUE column. This is the LONG column and contains data like this:
[Scan Section]
DeviceTimeout=15
Display=1
hDCCreate=0
Unit=0
DialogTitle=
IniFileName=c:\winnt\temp\kf.ini
IniSectionName=Scan Section
DeviceCache=1
etc....etc....
Depending on the settings created, the return string may vary in length.
Leen -
In my OBIEE development environment, a report I create in Answers generates the following SQL query to the database:
select T29323.LOCATION as c1,
T29323.TOOL_NAME as c2,
T29323.JOB_NUMBER as c3,
from
EDB.EDB_JOB_NUMBER_PARAMETER_T_V T29323
where
( T29323.JOB_NUMBER = 1319511
and T29323.CREATION_DATE <= TO_DATE('2008-05-21 08:38:18' , 'YYYY-MM-DD HH24:MI:SS')
and (T29323.LOCATION in ('MOO', 'RR'))
and T29323.CREATION_DATE >= TO_DATE('2008-05-18 08:38:18' , 'YYYY-MM-DD HH24:MI:SS'))
However, in my OBIEE Production environment the same report generates the following SQL query to the database;
select D1.c12 as c1,
D1.c11 as c2,
D1.c10 as c3
from
(select T29323.JOB_NUMBER as c10,
T29323.TOOL_NAME as c11,
T29323.LOCATION as c12
from
EDB.EDB_JOB_NUMBER_PARAMETER_T_V T29323
where ( T29323.JOB_NUMBER = 1319511
and T29323.CREATION_DATE <= TO_DATE('2008-05-21 09:19:03' , 'YYYY-MM-DD HH24:MI:SS')
and (T29323.LOCATION in ('MOO', 'RR'))
and T29323.CREATION_DATE >= TO_DATE('2008-05-18 09:19:03' , 'YYYY-MM-DD HH24:MI:SS'))
) D1
Any ideas why the queries are different? I have looked through my config files to see if a setting is different, but all are the same.
I am running OBIEE 10.1.3.3.2
Any suggestions would be appreciated.
Thanks,
KevinHi Kevin,
I have the same problem with generated SQL querys, I get different result with the same repository, same query in Answers, same OS... in several environments.
The BI vesion is 10.1.3.4
Any idea about the question?
Regards
Guillermo -
Database - Show SQL Query question..
Greetings:
I am helping a co-worker with Crystal. I don't use crystal but I am able to explain the problem. My co worker is currently using crystal reports 8.5. If he pulls a query and the report is generated he can then click on Database menu then click on Show SQL Query. From there he is able to edit, add, remove fields. Now we want to place him on Crystal V10. When he does the same task, instead of being able to edit the Show SQL query he can only view it. Is there a way around this so that he can Edit the sql query in version 10 or did that feature go away in versions 9 and above. Also we are going to Purchase Crystal 2008, is this feature available in 08? Any help would be appreicated..Hi there!
I have the same problem as described above. I have been asked to figure out what is wrong with one of the reports that used to work when we used MAS 4.05. We are now on MAS 4.20 with Crystal Reports v.10 and the report fails to run. I loaded the report into Crystal to see if I could see the problem and I discovered that the report is still trying to access a table from the old MAS database. The SQL code as shown in the Show SQL Query window is as follows:
SELECT "AR_InvoiceHistoryHeader"."InvoiceNo", "AR_InvoiceHistoryDetail"."ItemCodeDesc", "AR_InvoiceHistoryDetail"."ItemCode", "AR_InvoiceHistoryDetail"."ExtensionAmt"
FROM "AR_InvoiceHistoryHeader" "AR_InvoiceHistoryHeader", "AR_InvoiceHistoryDetail" "AR_InvoiceHistoryDetail"
WHERE "AR_InvoiceHistoryHeader"."InvoiceNo"="AR_InvoiceHistoryDetail"."InvoiceNo" AND "AR_InvoiceHistoryHeader"."HeaderSeqNo"="AR_InvoiceHistoryDetail"."HeaderSeqNo" AND "AR_InvoiceHistoryHeader"."CommissionAmt"="AR_InvoiceHistoryDetail"."CommissionAmt" AND ARO_InvHistoryDetail."SOItemNumber" <> 'COMMENT' AND ARN_InvHistoryHeader."InvoiceDate" = {d '2007-09-21'}
ORDER BY "AR_InvoiceHistoryHeader"."InvoiceNo"
The problem is that ARN_InvHistoryHeader needs to be AR_InvoiceHistoryHeader and SOItemNumber needs to be ItemCode.
When I go into the Database Expert, I can only see the tables in the FROM clause. I don't know how to modify the WHERE clause. It kind of looks like this report was only partially converted to the new version. Is there a way to changed these attributes without rebuilding the whole report?
By the way, I apologize for not setting my SQL off in a code box, but I tried that and it caused the page to be very wide with no horizontal scroll bar.
Edited by: Jason Schill on Oct 27, 2008 11:30 PM -
Hi All,
I'm new to XMLPublisher so i'll try to explain the best i can the problem i'm having creating a Data Model for my report.
I'm using Database XE and have installed XMLPublisher, as XE is extremely flexible in creating apps i'm having huge trouble finding a reporting solution for my applicaiton. I have created an app to track and control time and expense which i want to generate timesheet, expense sheets, invoice etc from.
Having done some read i think XML is the best approach for me however i'm having huge troubles with my data model.
EXAMPLE:
I have 2 tables to start with, first table holds client information and the second table holds project information. One client can have many projects.
When i create the Data Model using SQL i get the obvious problem that when a client has more then one project my XML structure is incorrect.
SELECT gc.name AS CLIENT,
gp.name AS PROJECT
FROM gte_client gc,
gte_project gp
WHERE gc.client_id = gp.client_id(+)
The above SQL creates the following XML
- <ROWSET>
- <ROW>
<NAME>Symatrix Ltd</NAME>
<NAME>Symatrix Pre-Sales</NAME>
</ROW>
- <ROW>
<NAME>Aston Carter</NAME>
<NAME>MOD</NAME>
</ROW>
- <ROW>
<NAME>Symatrix Ltd</NAME>
<NAME>Fujitsu</NAME>
</ROW>
</ROWSET>
Obvious problem here is the fact that client Symatrix appears twice as there are 2 projects.
I have tried to write SQL/XML and i think i'm beginning to understand the structure of the XML functions however XMLPublisher doesn't appear to understand the syntax when creating a SQL Query for the data model.
I hope all this makes sense.
Kind Regards
GlenHi All,
Ok, so with a little searching through documents and articles on the web i found this information.
http://blogs.oracle.com/xmlpublisher/2006/05/05#a38
this details the exact thing i'm trying to achieve so anyone else who searches this forum with a similar problem check this out.
Regards
Glen -
hi all,
i created a report that displays results based on this query initially.
select *
from EMP
where 1=1;
i'm using a SQL Query (PL/SQL Function Body Returning SQL Query).
i have search items in my page like empno, lastname, firstname, middle, email_address etc... when i place a value for lastname then in my query it should add AND LASTNAME = :P1_LASTNAME.
so the query returned should now have
select *
from EMP
where 1=1
and LASTNAME = :P1_LASTNAME;
is this possible?
i was thinking something like looping for all search items in the page (ie. text, popup lov, datetimepicker) then check whether the item is null or not... when not null then probably get the substring of the item name like (ie. substr(:P1_LASTNAME) and get only LASTNAME then add "=" then concat it with the item name. not sure if this is possible though.
thanks
allenhi denes,
thanks for the sample... i noticed that the sample hard codes additional conditions to be added to the sql query which is okay when the search criteria is less than 5-10... but i'm thinking if the search criteria will be like 15-30 fields or make all fields searchable, this might be uncomfortable.
what i was thinking is like loop thru all the items i.e.
declare
sql varchar2(4000) := 'select * from emp where 1=1';
begin
for i in (select * from all_items_in_apex) -- this is just an example.
loop
if i.value is not null then
sql := sql || ' and ' || i.column || '=' || i.value;
end if;
end loop;
end;
the only thing is that i don't know if there's a possible replacement for the clause (select * from all_items_in_apex).
sorry if i'm asking too much but this is how i normally do it in forms. the suggestion in the link you provided should be sufficient but i was just wondering if this idea is also possible.
thanks again.
allen -
Sql query question - been trying for two days
Hi guys im trying to carry out an sql query
Im using a left join to do a query, which gives me a set of results:
select COURSESTUDENT.StudentNo, COURSESTUDENT.CourseCode, COURSESTUDENT.Year, MARKS.ExamMark, MARKS.EntryNo FROM COURSESTUDENT LEFT JOIN MARKS ON COURSESTUDENT.StudentNo=MARKS.StudentNo AND COURSESTUDENT.CourseCode=MARKS.CourseCode AND COURSESTUDENT.Year=MARKS.Year
but I would like to do a select on this result but do not want to use a create view as if more than one person access this page at a time then if the servlet tries to create the view an error will occur.
I would like to do the following select statement on the results of the query above..
select * from (above) where CourseCode='ELE304' AND Year=1999;
Is this possible, im using postgres..
Please help......
thanks
tzafSorry, I have never used postgres, but in several databases, the following syntax would work and provide the correct ResultSet.
select *
from (
SELECT
COURSESTUDENT.StudentNo,
COURSESTUDENT.CourseCode,
COURSESTUDENT.Year,
MARKS.ExamMark,
MARKS.EntryNo
FROM
COURSESTUDENT LEFT JOIN MARKS ON
COURSESTUDENT.StudentNo=MARKS.StudentNo AND
COURSESTUDENT.CourseCode=MARKS.CourseCode AND
COURSESTUDENT.Year=MARKS.Year
) A
WHERE
CourseCode='ELE304' AND
Year=1999 -
SQL Query? The question is how?
Hi folks,
I am developing a finance program and I am having difficulty writing a SQL query to get the info that I need.
In short I have two tables:
TABLE 1: Currency Rates
FROM_CURRENCY (CURRENCY_ABRV)
TO_CURRENCY (CURRENCY_ABRV)
EXCHANGE_RATE
DATE
TABLE 2: Currency Country
CURRENCY_ABRV
CURRENCY_NAME
CURRENCY_SYMBOL
COUNTRY
REGION
COUNTRY_FLAG_IMAGE
I want to get the following information:
1. FROM_CURRENCY_FLAG
2. FROM_COUNTRY
3. TO_CURRENCY_FLAG
4. TO_COUNTRY
5. RATE
So basically using Table 1 FROM_CURRENCY & TO_CURRENCY and getting the relevant Country & Flag for each. The problem is that I cannot seem to get this info from one select statement. I at the moment I am getting all the records from Table 1. Then for each From & To currency searching Table 2.
This is very very time consuming. Anyone can help how to do this better.
Many thanks
JamesSELECT
FROM_CURRENCY FROM_CURRENCY_FLAG,
a.COUNTRY FROM_COUNTRY,
TO_CURRENCY TO_CURRENCY_FLAG,
b.COUNTRY TO_COUNTRY,
EXCHANGE_RATE RATE
FROM TABLE1, TABLE2 a, TABLE2 b
WHERE FROM_CURRENCY = a.CURRENCY_ABRV
AND TO_CURRENCY = b.CURRENCY_ABRV;
You join TABLE1 with TABLE2 by FROM_CURRENCY and again with TABLE2 by TO_CURRENCY.
TABLE2 uses once alias name a and then alias name b, so a and b seem like different tables in the query.
All columns are assigned alias names in the SELECT clause to match your requirements. -
I have an interesting problem and wondering how I can get this result in a single SQL query:
Here is table emp has data with a row for every year since the employee joined with the salary paid that particular year with following columns:
emp (
id varchar2(10),
name varchar2(25),
interested_year date,
salarypaid number(10)
I would like to print the results as follows:
id name previousyear_salarypaid currentyear_salarypaid
x xxxxx xxxxxx xxxxx
Is this possible to do? I have tried to simplify my actual problem so I hope I have included all necessary details.Just to clarify, the columns mentioned in the results are
previousyear_salarypaid is nothing but
salarypaid where interested_year = '2007'
currentyear_salarypaid is nothing but
salarypaid where interested_year = '2006' -
SQL query question for SQL Swing Applet
Hi
I am building a little SQL Swing applet.
I was wondering if there is a SQL query statement to
find:
* The names of all the tables in the Database loaded.
* The number of tables in a database loaded.
Thank you very much in advance, A.Not positive, but check out Connection.getMetaData(). It returns a DatabaseMetaData instance that has a number of get... methods that may provide the info you need.
-
SQL-Query-Question: get all ID2 which have specific ID1
Hello,
I have a table Tab1 with millions of entries like
ID1 ID2
1 aa
4 aa
1 bb
4 cc
I'm looking for a sql-query which gives me all ID2-values which have a all of the supplied ID1, in the example above if I query for 1 4 then I want aa and not bb or cc because bb has only 1 and cc only 4.
The values of ID1 could be a lot like (1,2,3,5,7,8,9,10,34,4,67,33,53,43...).
Greetings
Stefanjust this
SELECT ID1,ID2
FROM Table t
WHERE EXISTS (SELECT 1
FROM Table
AND ID2 = t.ID2
HAVING COUNT(DISTINCT CASE WHEN ID1 IN (1,4) THEN ID1 ELSE NULL END) = 2
If you want you can pass values 1,4 through a parameter to make it generic like below
DECLARE @ValueList varchar(10)
SET @ValueList = '1,4'
SELECT ID1,ID2
FROM Table t
WHERE EXISTS (SELECT 1
FROM Table
WHERE ID2 = t.ID2
HAVING COUNT(DISTINCT CASE WHEN ',' + @ValueList + ',' LIKE '%,' + CAST(ID1 AS varchar(5)) + ',%' THEN ID1 END) = LEN(@ValueList) - LEN(REPLACE(@ValueList,',','')) + 1
Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs
Maybe you are looking for
-
Video is randomly distorted (color inverted) in Premiere Pro CC 2014
Below is a screen grab of what the distortion looks like. It happens regardless of CODEC, sequence setting or type of video file. It happens to MPG, MOV and AVI files equally. It even happens to still graphics. Here are the particulars for my compute
-
Populate Final internal table from Dynamic internal table
Hello, I have ti display data in ALV grid whose structure is fixed. I am dynamically selecting data iin an internal table. Now from this dynamic internal table, i need to populate my final internal table whose structurte is fixed. Please help. Rgds,
-
Hi, I seldom use the BLOB. Here is the coding that creates a BLOB. private BLOB getBlob(byte[] str, Connection con) throws SQLException, IOException { BLOB blob = BLOB.createTemporary(con, true, BLOB.DURATION_SESSION); blob.open(BLOB.MODE_READWR
-
Good Eveing!:)
I´ve got a question, i upload my first website this evening. Than i want to change my guestbook in adobe muse. when i was finish, a message says me, the file can´t be saved.. And then Adpobe muse say: Error cod: 3123, the file can´t be saved. Now my
-
"Locking" layers view in InDesign
I'm not even sure how to describe this, so forgive me if there's something out there than answers this question. I work with layers in both photoshop and illustrator quite a bit, mainly because I work with things that have displays and those displays