Parameter Issue in Sql statement
Hi experts
I am writing a simple parameter query and somehow it is not working .
Let me specify the condition
Customer want to choose from three parameter --OINV table and INV1
1.Customer code C
2.Date between And B
At running sequence :
Customer can either put all the parameter values --A and B And C
Or
Customer will put A and B but Not C
Can you help me on this
Thank you
Bishal
In case there are credits:
SELECT t1.docdate, t1.docnum, t0.itemcode, t0.Dscription, t0.quantity, t0.linetotal, t2.cardname FROM dbo.inv1 t0
inner join dbo.oinv t1 on t1.docnum = t0.docentry
inner join dbo.ocrd t2 on t2.cardcode = t0.Basecard
where t2.cardname like '[%2]%' and t2.cardtype = 'C' and t1.docdate >= '[%0]' and t1.docdate<= '[%1]'
Union
SELECT t1.docdate, t1.docnum, t0.itemcode, t0.Dscription, t0.quantity, t0.linetotal * -1, t2.cardname FROM dbo.rin1 t0
inner join dbo.orin t1 on t1.docnum = t0.docentry
inner join dbo.ocrd t2 on t2.cardcode = t0.Basecard
where t2.cardname like '[%2]%' and t2.cardtype = 'C' and t1.docdate >= '[%0]' and t1.docdate<= '[%1]'
Similar Messages
-
Parameter reuse in SQL statement
I'm trying to convert to ODP.NET (version 10.1.0.200) from the Microsoft OracleClient. With the ms client I was able to reuse parameters within the sql statement multiple time. It appears with ODP.NET I can only do this one time with one parameter - after that an ora-01008 is thrown.
For example:
cmd.commandText = "select count(*) from some_table where (dept_no = :deptNo or :deptNo is null) and (emp_no = :empNo or :empNo is null)"
Above would work in ms OracleClient but doesn't appear to in ODP.NET. I am correctly adding the parameters to the command - everything works fine until I add the second occurrence of the second parm...
Has anyone else run into this or found a fix?Never Mind - The default behavior is cmd.BindByName = false. Once I set it to true everything was just wonderful.
-
Parameter value in sql statement (Custom Folder)
Hi ,
I want to formulate a custom folder - consisting of a sql statement , inside of which there is a parameter. Then in Desktop , the users can select a number as the searching criteria and this value will replace the parameter in sql statement , as in the following:
select CODE_FARMAKOU,EMP_NAME,PACKTYPE,PACKSIZE , SUM_POSOTITA from
select CODE_FARMAKOU,EMP_NAME,PACKTYPE,PACKSIZE , SUM_POSOTITA , row_number() over (order by sum_posotita desc) rw from
(SELECT CODE_FARMAKOU,EMP_NAME,PACKTYPE,PACKSIZE, TO_DATE(DATES_EKTELESIS,'DD/MM/RRRR') DATES ,SUM(POSOTITA) SUM_POSOTITA
FROM EKTELESI_AT_SINT_CLINIC A, MITROO_FARMAKOU B
WHERE CODE_FARMAKOU = FARMAK_CODE
GROUP BY CODE_FARMAKOU,EMP_NAME,PACKTYPE,PACKSIZE, DATES_EKTELESIS))
where rw<=&p
order by SUM_POSOTITA desc The problem is that the use of parameter , whereas in sql*plus is valid, in Discoverer is not....
What can i do in this situation...????
Thanks , a lot
SimonHowever , a peculiar event happens....
whereas the sql statement is:
select CODE_FARMAKOU,EMP_NAME,PACKTYPE,PACKSIZE , SUM_POSOTITA,RW from
select CODE_FARMAKOU,EMP_NAME,PACKTYPE,PACKSIZE , SUM_POSOTITA , row_number() over (order by sum_posotita desc) rw from
(SELECT CODE_FARMAKOU,EMP_NAME,PACKTYPE,PACKSIZE, TO_DATE(DATES_EKTELESIS,'DD/MM/RRRR') DATES ,SUM(POSOTITA) SUM_POSOTITA
FROM EKTELESI_AT_SINT_CLINIC A, MITROO_FARMAKOU B
WHERE CODE_FARMAKOU = FARMAK_CODE
GROUP BY CODE_FARMAKOU,EMP_NAME,PACKTYPE,PACKSIZE, DATES_EKTELESIS
UNION ALL
SELECT CODE_FARMAKOU,EMP_NAME,PACKTYPE,PACKSIZE, TO_DATE(DATES_EKTELESIS,'DD/MM/RRRR') DATES,SUM(POSOTITA) SUM_POSOTITA
FROM EKTELESI_AT_SINT_EX_IATR A, MITROO_FARMAKOU B
WHERE CODE_FARMAKOU = FARMAK_CODE
GROUP BY CODE_FARMAKOU,EMP_NAME,PACKTYPE,PACKSIZE, DATES_EKTELESIS
UNION ALL
SELECT CODE_FARMAKOU,EMP_NAME,PACKTYPE,PACKSIZE, TO_DATE(DATES_EKTELESIS,'DD/MM/RRRR') DATES,SUM(POSOTITA) SUM_POSOTITA
FROM EKTELESI_AT_SINT_FOREON_MS A, MITROO_FARMAKOU B
WHERE CODE_FARMAKOU = FARMAK_CODE
GROUP BY CODE_FARMAKOU,EMP_NAME,PACKTYPE,PACKSIZE, DATES_EKTELESIS
UNION ALL
SELECT CODE_FARMAKOU,EMP_NAME,PACKTYPE,PACKSIZE, TO_DATE(DATES_EKTELESIS,'DD/MM/RRRR') DATES,SUM(POSOTITA) SUM_POSOTITA
FROM EKTELESI_GEN_SINT_KLIN A, MITROO_FARMAKOU B
WHERE CODE_FARMAKOU = FARMAK_CODE
GROUP BY CODE_FARMAKOU,EMP_NAME,PACKTYPE,PACKSIZE, DATES_EKTELESIS
UNION ALL
SELECT CODE_FARMAKOU,EMP_NAME,PACKTYPE,PACKSIZE, TO_DATE(DATES_EKTELESIS,'DD/MM/RRRR') DATES,SUM(POSOTITA) SUM_POSOTITA
FROM EKTELESI_GEN_SINT_EX_IATR A, MITROO_FARMAKOU B
WHERE CODE_FARMAKOU = FARMAK_CODE
GROUP BY CODE_FARMAKOU,EMP_NAME,PACKTYPE,PACKSIZE, DATES_EKTELESIS))
order by RW ascand produces the results....
CODE_FARMAKOU EMP_NAME PACKTYPE PACKSIZE SUM_POSOTITA RW
1000003279 MOXACEF BT 40(BLIST10X4) 45 1
0000014071 DOPAMINE HYDROCHLORIDE VIAL 5 ML X 25 30 2
1000016655 KABIVEN BT 50ÖÕÓ.×1,7ML 21 3
1000014127 DEPON VIT. C BT 2TUBX10 6 4
0000002419 FACTREL INJECTION VIAL 2 ML 5 5
0000086289 DETUSSIN EXPECTORANT BOT 120 ML 3 6
1000016655 KABIVEN BT 50ÖÕÓ.×1,7ML 2 7
1000014127 DEPON VIT. C BT 2TUBX10 2 8
1000000760 DEPON BT 20(BLIST2X10) 2 9
1000003279 MOXACEF BT 40(BLIST10X4) 1 10
1000003279 MOXACEF BT 40(BLIST10X4) 1 11
1000000760 DEPON BT 20(BLIST2X10) 1 12
12 rows selectedIn Discoverer , even i select to see -as parameter- let's say the 10 first records, the system displays the 7 first records , whereas when i want to see the 1,2,3,4,5,6,7 first records the system works fine....and displays accordingly 1,2,3,4,5,6,7 first records. The problem occurs above the 8th record-as parameter selected..!!!!!
I defined the parameter as :Rw<=:Rw
What may be the problem...????
SORRY!!!!! I FOUND THE PROBLEM ....!!!!
Regards and many thanks,
Simon
Message was edited by:
sgalaxy -
Parameter passing in sql statement
hello..
i want to execute a value insertion query in jdbc..where the values are all parameterized string variables.but it failed to execute the query...
and generating a sql exception "too few parameter.."
but it succesfully executes with a direct string like'hello'....
heres my sample code for this...
public void settablevalue(String pn,String pid,String time)
try
Statement s1=con.createStatement();
System.out.println(pn+" "+pid+" "+time);
char []pname=new char[50];
char []prcsid=new char[50];
char []timecrtn=new char[100];
pname=pn.toCharArray();
prcsid=pid.toCharArray();
timecrtn=time.toCharArray();
s1.execute("insert into ProcessEvent values(pname[],prcsid[],timecrtn[])");
System.out.println("Executed");
s1.close();
catch (Exception err)
System.out.println("ERROR: " + err);
now do i insert string values in the table...
pls help...thnx in advanceYou should use a PreparedStatement. Read the JavaDoc of PreparedStatement.
Usually you prepare a statmenet like this: "insert into ProcessEvent values (?, ?, ?)" and then use setString(), setDate(), ... to set the concrete values.
Additionally ('though this doesn't have to do anything with your problem): You don't need to create char-arrays, and even if you do, you don't have to initialize them (using "char[]pname=new char[50]") if you later assign a new value (using "pname=pn.toCharArray()"). -
Dynamically Identifying user issuing SQL statement
Client wants to provide security to certain data by first capturing the identity of every user issuing a SQL statement, then, based on the user and a security table, allow access to certain data. Is this doable? TIA...
Oracle has a whole product centered around this called "Label Seurity", which I'm guessing may be too much for your needs. Check out this marking shag for info about "virtual private databases" http://technet.oracle.com/deploy/security/oracle8i/pdf/vpd_wp6.pdf
Basically, the idea is that the "old school", but still perfecly fine, way to do it is to create views for each group of users and grant permissions to the views for the appropriate users. Optionally using synomyms into their schemas to give users the same name for the different views.
The virtual private database and similar stuff is hard to explain. I think of it as the db engine auto-adding a where clause to each sql statement based upon who you are. If that makes any sense.
I've tried this a couple of different ways, but have yet to hit upon one that seems easy & generally applicable.
Good Luck -d -
USING MULTIPLE SELECT VARIABLE IN A SQL STATEMENT
In HTMLDB, the value of the parameter of a multiple select box is colon delimited(ie P6_Name = Smith:Jones:Burke). Is there an easy way to use this parameter in a SQL statement?
Example
Select *
from names
where
Name=P6_Name
Select *
from names
where
Name IN ('Smith','Jones','Burke')
Thank youThank you for your response! I'm an idiot. It didn't make sense to me because your talking about a <i>multi-select</i> variable and I was thinking about a <i>select-list</i> variable. My problem is that I need to assign a list of values to one select list item.
<br>
For example:
<br>
SELECT * FROM EMPLOYEE
WHERE EMPLOYEE_TYPE IN ( :SELECT_LIST_RETURN_VALUE );
<br><br>
With the select list as
<br><br>
Display value = All Types, Some Types, One Specific Type<br>
Return Value = (Type1, type2, type3), (type1, type2), (type3)
<br><br>
I've just started in all of this so I'd imagine that I'm probably going about it wrong. -
Apex 4.0 display image item :BLOB column returned by SQL statement
Hello
I'm creating an display image item in apex 4.0. The source is a BLOB column returned by SQL statement.
When I'm issuing an sql statement like this:
select lado.blob_content
from large_documents lado
, large_doc_headers ladh
where lado.ladh_nr = ladh.nr
more criteriait works fine.
When I create a function inside a package with the same query (in a cursor)
function get_image(some parameters in) return blob
Following in apex by:
select get_image(some parameters) from dualI get a
ORA-06502: PL/SQL: numeric or value error: character string buffer too smallAnybody any idea why this does not work?
Regards ErikHi Eric,
the environment assumes varchar2-output by default, which will be limited to 32767 characters and may have problems with binary formats. You could define a blob-variable to select the value into.
DECLARE
l_blob BLOB;
BEGIN
SELECT get_image(some parameters)
INTO l_blob
FROM dual;
END;
/If you expect the BLOB-Content to be text (you should consider CLOB then), you may use UTL_RAW.CAST_TO_VARCHAR2 to convert the content. If your object is larger than the maximum varchar2 size, or you want to convert BLOB to CLOB, you might be interested in some converter like described here: {message:id=559749}
Hope this is what you were searching for.
-Udo -
Retrieve Crystal SQL statements without first submitting parameter values?
Hi,
I am retrieving SQL statements for Crystal reports without issue, but a large number of our reports have parameters and for these the following error is thrown when I try to retrieve the SQL statement via RAS using getSQLStatement():
com.crystaldecisions.sdk.occa.report.lib.ReportSDKServerException: Missing parameter values.---- Error code:-2147217394 Error code name:missingParameterValueError
I have a large number of reports I'd like to pull SQL for, so it's not feasible to have my script push parameter values to each and every report. Is there a way to retrieve SQL statements without first pushing parameter values?
ThanksHello Jeremy.
I found a Knowledge Base article that deals with the "Error code:-2147217394 Error code name:missingParameterValueError" error that you mention. Perhaps you could take a look at the following KBase Article in the Service MarketPlace and see if any of it applies to your situation:
KBase number: 1420593
I also found KBase number "1420501 - Report parameters ignored when set by Java post processing code" that seems to deal with the same problem.
Regards.
- Robert -
New sessions every time an sql statement is issued
Hi, I have a problem with using oraoledb (v 10.1.0) with VB6 accessing an Oracle database 9i (v 9.2.0.6). Every time an sql statement is issued in the client side, a new session is started in the server side (seen in Enterprise Manager). I don´'t know why. Is an oraoledb parameter or a database parameter? How can I avoid this? The big problem behind this behaviour is controling row locking. If I issue a "select field from table where conditions for update nowait(or wait n)", this creates a lock that belongs to a session. If a few sentences after I issue an "update the-same-table set the-same-field = value where the-same-condition" as this one creates a new session, an ORA-00054 is raised telling the row(s) is blocked.
any idea?
thanksI'm a DBA and I encountered the same problem with a system developed for our company. We reported that to the company that developed the application and they sey then close the conections, but they remain in the database.
Could anyone find a solution for this? I believe is a problem in the VB code, but I do not know anything from VB.
thanks,
Lisandro -
Execute Stored Procedure SQL Statement with Parameter from Cell
I would like to know if there is a way to pass the parameters to SQL Statement of Power Query. For example, I have a SQL Statement as follows:
EXEC [dbo].[spReportBuilder]
@Report = N'Revenue Summary',
@Year = N'2014',
@Period = N'11'
I would like to know if it is possible to pass the @Report, @Year, @Period values from cells in the workbook, preferably without vba.
Thanksrtisserand,
Here is the M code:
let
IDValue = Excel.CurrentWorkbook(){[Name="YearTable"]}[Content],
Source = Sql.Database("localhost", "AdventureWorks2012", [Query="EXEC [dbo].[spReportBuilder] @Report = N'Revenue Summary', @Year = N'" & Number.ToText(IDValue[ID]{0}) & "', @Period = N'11'"])
in
Source
Some notes:
You have to reference the excel query from another step in the query or you will get the following error:
Formula.Firewall: Query <>something<> references other queries or steps and so may not directly access a data source. Please rebuild this data combination.
I only did the parameter for one value.
Hope this helps.
Reeves
Denver, CO -
How do I Pass a parameter to a SQL Component Task where the source SQL statement is also a variable
Hi,
I have been tasked with making a complex package more generic.
To achieve this I need to pass a parameter to a SQL Component Task where the source SQL statement is also a variable.
So to help articulate my question further I have create a package and database as follows; -
USE [KWPlay]
GO
/****** Object: Table [dbo].[tblTest] Script Date: 05/14/2014 17:08:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tblTest](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Description] [nvarchar](50) NULL,
CONSTRAINT [PK_tblTest] PRIMARY KEY CLUSTERED
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
I populated this table with a single record.
I unit tested the SQL within SSMS as follows;
SELECT * FROM dbo.tblTest
Result; -
ID
Description
1
Happy
DECLARE @myParam NVARCHAR(100)
SET @myParam = 'Sad'
UPDATE dbo.tblTest SET [Description] = @myParam FROM dbo.tblTest WHERE ID = 1
SELECT * FROM dbo.tblTest
Result; -
ID
Description
1
Sad
Within the package I created two variables as follows; -
Name: strSQL
Scope: Package
Data Type: String
Value: UPDATE dbo.tblTest SET [Description] = @myParam FROM dbo.tblTest WHERE ID = 1
Name: strStatus
Scope: Package
Data Type: String
Value: Happy
I then created a single ‘Execute SQL Task’ component within the control flow as follows; -
However when I run the above package I get the following error; -
SSIS package "Package.dtsx" starting.
Error: 0xC002F210 at Execute SQL Task, Execute SQL Task: Executing the query "UPDATE dbo.tblTest SET [Description] = @myParam FR..." failed with the following error:
"Parameter name is unrecognized.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
Task failed: Execute SQL Task
Warning: 0x80019002 at Package: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED.
The Execution method succeeded, but the number of errors raised (1) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the
errors.
SSIS package "Package.dtsx" finished: Failure.
I also tried; -
Name: strSQL
Scope: Package
Data Type: String
Value: UPDATE dbo.tblTest SET [Description] = ? FROM dbo.tblTest WHERE ID = 1
However I received the error; -
SSIS package "Package.dtsx" starting.
Error: 0xC002F210 at Execute SQL Task, Execute SQL Task: Executing the query "UPDATE dbo.tblTest SET [Description] = ? FROM dbo...." failed with the following error: "Parameter name is unrecognized.". Possible failure reasons: Problems with
the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
Task failed: Execute SQL Task
Warning: 0x80019002 at Package: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED. The Execution method succeeded, but the number of errors raised (1) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches
the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
SSIS package "Package.dtsx" finished: Failure.
Kind Regards,
Kieran.
Kieran Patrick Wood http://www.innovativebusinessintelligence.com http://uk.linkedin.com/in/kieranpatrickwood http://kieranwood.wordpress.com/Tried; -
Name: strSQL
Scope: Package
Data Type: String
Value: UPDATE dbo.tblTest SET [Description] = ? FROM dbo.tblTest WHERE ID = 1
and; -
Result; -
SSIS package "Package.dtsx" starting.
SSIS package "Package.dtsx" finished: Success.
Therefore the answer was to put the parameter number rather than the parameter name under the parameter mapping tab-> parameter name column.
Kieran Patrick Wood http://www.innovativebusinessintelligence.com http://uk.linkedin.com/in/kieranpatrickwood http://kieranwood.wordpress.com/ -
Pass ORG_ID as sql statement for parameter in request set
We are in a multi-org environment. We are running the request PRC: Generate Draft Revenue for a Single Project as part of the request set. We want the request to automatically fill in the open pa period as the accrue through date. We have been using the SQL Statement below as the value for the accrue through date parameter.
select end_date
from pa_periods_all
where status = 'O'
and current_pa_period_flag = 'Y'
Unfortunately that does not limit to a specific company. We a company that still have DEC-05 while another has an open period of JAN-06. This is causing the program fits. How do I pass the org_id to the request? [in beginners terms please]
Thanks.
AnneNo idea what might be wroong without more info...
Do some output. Test the ${params.id} variable passed to the second jsp. If that is correct, then error is in the select statement or display of jsp2. If it is correct the error comes from jsp1.
If I have to guess, then I would say the error comes from JSP1, and the ${row.vac_id} should only be called once. In which case I would do something like this:
//in jsp 1
<c:forEach var="row" items="${results.rows}" varStatus="counter" >
<c:set var="vac_id" value="${row.vac_id}" scope="page"/>
<tr>
<td>${vac_id}</td>
<td><a href="vacancydetails.jsp?id=${vac_id}">More</a></td>But that is a guess only...
Errr... Hold on to that as reference, but the it is entirely likely that I misspelled ${params.id} It may be ${param.id} I forget and away from my machine right now... -
Pass parameter to sql statement in query manager
Hai to all,
I want to pass the percentage as the parameter into the sql statemnet.i what to execute it in the query manager.
If i execute that statement then cann't found the tablename error is coming.
Other than the data in the table (general data) pass to the parameter in the sql at runtime.
for example:
select [%0] *100
how to pass 10 to that sql statement.
Please help me...
Regards,
Raji.Hi Ramya,
You can create a SP with parameters to accept and then execut this SP from SAP Business One Query Manager by passing the parameter (in your case 10). The result will be as desired.
Ex:
Create this Procedure in SQL Management Studio
create proc Test(@a as int)
as
begin
select (@a*100)
end
To Execute the Query use this Query and pass the desired values with parameters
execute Test 10
Regards,
Reno -
SQL Statement -- Throws GROUP BY issue on NVL
Hey All,
This is pretty much my first time tackling a very complex SQL Statement but the boss is adamant about it.
Anyways here is the information. I have 3 Tables. Table one Contains Work Order Infromation that will be listed or grouped. Table 2 and Table 3 house information that needs to be summed (Estimate hours and Actual Hours).
So my SQL Statement looked something like this... (Its a mess)
select workorder.wolo3, workorder.wojp1, workorder.wonum, workorder.description, workorder.location, workorder.status, workorder.wopriority, workorder.targstartdate, workorder.reportdate, workorder.pmnum, workorder.schedstart, sum(labtrans.regularhrs + labtrans.premiumpayhours) as actualhours, sum(wplabor.quantity * wplabor.laborhrs) as estimatehrs
from maximo.workorder left outer join maximo.labtrans on labtrans.regularhrs > 0 and labtrans.refwo = workorder.wonum and labtrans.siteid = workorder.siteid or labtrans.premiumpayratetype = 'MULTIPLIER' and labtrans.refwo = workorder.wonum and labtrans.siteid = workorder.siteid left outer join maximo.wplabor on wplabor.wonum = workorder.wonum and wplabor.siteid = workorder.siteid
where workorder.istask=0 and workorder.siteid='NTS' and workorder.status in ('INPRG','SCHED') and workorder.crewid in ('MAINT','DAF') and workorder.schedstart <= TO_DATE('12-13-2009','MM-DD-YYYY') and wolo3 is not null group by workorder.wonum, workorder.status, workorder.wopriority, workorder.pmnum, workorder.location, workorder.description, workorder.targstartdate, workorder.reportdate, workorder.schedstart, workorder.wolo3, workorder.wojp1
Now the problem is that the 2nd sum (Estimate Hrs) gets HUGE numbers if there are multiple rows in Actual Hours. So I did some searching. Seems that if I used the NVL function in the SQL Statement it would fix the issue...
select workorder.wolo3, workorder.wojp1, workorder.wonum, workorder.description, workorder.location, workorder.status, workorder.wopriority, workorder.targstartdate, workorder.reportdate, workorder.pmnum, workorder.schedstart, sum(labtrans.regularhrs + labtrans.premiumpayhours) as actualhours,
nvl((select sum(wplabor.quantity * wplabor.laborhrs) from maximo.wplabor where wplabor.wonum = workorder.wonum and wplabor.siteid = workorder.siteid),0)
from maximo.workorder left outer join maximo.labtrans on labtrans.regularhrs > 0 and labtrans.refwo = workorder.wonum and
labtrans.siteid = workorder.siteid or labtrans.premiumpayratetype = 'MULTIPLIER' and labtrans.refwo = workorder.wonum and
labtrans.siteid = workorder.siteid
where workorder.istask=0 and workorder.siteid='NTS' and workorder.status in ('INPRG','SCHED') and
workorder.crewid in ('MAINT','DAF') and workorder.schedstart <= TO_DATE('12-13-2009','MM-DD-YYYY') and wolo3 is not null
group by workorder.wonum, workorder.status, workorder.wopriority, workorder.pmnum, workorder.location, workorder.description, workorder.targstartdate, workorder.reportdate, workorder.schedstart, workorder.wolo3, workorder.wojp1
However If get the error not a GROUP BY expression.
I really need this to work. How can I get the NVL to work with out having to define a Group for it. The problem is that it is a "alias column" and you cannot Group by those fields. Frustation sets in... UGH!
Thanks in Advance, Ben.Hi, Ben,
Wlecome to the forum!
user12273726 wrote:
So my SQL Statement looked something like this... (Its a mess)You're right. Fix that first.
Put each SELECT item, each condition, and each GROUP BY expression on a separate line. Indent to show here the clauses (SELECT, FROM, WHERE) are.
For example:
SELECT workorder.wolo3
, workorder.wojp1
, workorder.wonum
, workorder.description
, workorder.location
, workorder.status
, workorder.wopriority
, workorder.targstartdate
, workorder.reportdate
, workorder.pmnum
, workorder.schedstart
, SUM (labtrans.regularhrs + labtrans.premiumpayhours) AS actualhours
, SUM (wplabor.quantity * wplabor.laborhrs) AS estimatehrs
FROM maximo.workorder
LEFT OUTER JOIN maximo.labtrans ON labtrans.regularhrs > 0
AND labtrans.refwo = workorder.wonum
AND labtrans.siteid = workorder.siteid
OR labtrans.premiumpayratetype = 'MULTIPLIER' -- WARNING! Don't mix AND and OR
AND labtrans.refwo = workorder.wonum
AND labtrans.siteid = workorder.siteid
LEFT OUTER JOIN maximo.wplabor ON wplabor.wonum = workorder.wonum
AND wplabor.siteid = workorder.siteid
WHERE workorder.istask = 0
AND workorder.siteid = 'NTS'
AND workorder.status IN ('INPRG','SCHED')
AND workorder.crewid IN ('MAINT','DAF')
AND workorder.schedstart <= TO_DATE ('12-13-2009','MM-DD-YYYY')
AND wolo3 IS NOT NULL
GROUP BY workorder.wonum
, workorder.status
, workorder.wopriority
, workorder.pmnum
, workorder.location
, workorder.description
, workorder.targstartdate
, workorder.reportdate
, workorder.schedstart
, workorder.wolo3
, workorder.wojp1
;When you post formatted text on this site, type these 6 characters:
{code}
(small letters only, inside curly brackets) before and after sections of formatted text, to preserve spacing.
Now the problem is that the 2nd sum (Estimate Hrs) gets HUGE numbers if there are multiple rows in Actual Hours. Huge numbers are not necessarily wrong. Do yo mean the numbers computed by your query are much bigger than they are supposed to be?
So I did some searching. Seems that if I used the NVL function in the SQL Statement it would fix the issue...
select workorder.wolo3, workorder.wojp1, workorder.wonum, workorder.description, workorder.location, workorder.status, workorder.wopriority, workorder.targstartdate, workorder.reportdate, workorder.pmnum, workorder.schedstart, sum(labtrans.regularhrs + labtrans.premiumpayhours) as actualhours,
nvl((select sum(wplabor.quantity * wplabor.laborhrs) from maximo.wplabor where wplabor.wonum = workorder.wonum and wplabor.siteid = workorder.siteid),0)
...It looks like you have a Chasm Trap, where you have multiple, independent one-to-many relationships on the same table, and the solution to aggregate them in separate queruies.
It looks like you're trying to aggregate wplabor in scalar sub-queries, which makes the GROUP BY more complicated (as you discovered), and is also very inefficient.
It would be easier to code and more efficient to run if you aggregated wplabor in a sub-query, and then joined to this sub-query (and not the actual wplabor table) in your main query.
If you'd like help, post a little sample data (CREATE TABLE and INSERT statements) for all three tables, and the results you want from that data.
Simplify as much as possible. Instead of GROUPing BY 11 columns, just GROUP BY, say, 3 columns: the 2 involved in the join condidiotns, and one more. Once you understand how to do this, adding the other expressions will be trivial.
You can also simplify by ignoring, for now, the WHERE clause, and, therefore, the columns involved in the WHERE clause. It looks like that has nothing to do with the problem. Again, adding the conditions later will be trivial. -
Passing parameter into SQL statement in Crystal Reports
Hi all,
I would like to call Crystal Reports in JSP. I can handle it well now. But I hope to let user input their selection criteria before printing out the report. I know how to get the parameter value in JSP, but I really dunno how to pass these parameter values into the SQL statement in Crystal Report. Actually, is it possible to do so?
If anyone has idea, please tell me. Thx Thx!
Regards,
BettyDear Sir,
I want to use Crystal Report as a web base using JSP. But, I am getting how to call .rpt file in .jsp file & passing of parameter.
If you have any idea, please reply as early as possible
Thanking U.
My userid = [email protected]
Regds
Pankaj..
Maybe you are looking for
-
How can I install after a hard drive failure with only upgrade disk?
I've been using Photoshop since 1998 but my HDD recently suffered a complete failure and I've had to change the drive. Unfortunately, I don't have my original Photoshop disk, only a CS2 and CS5 upgrade disk (with both serial numbers). Is there any wa
-
HT204490 How do I get Photos - iPhotos to work with my iPhone
I went to my computer to download some photos on my iPhone and noticed an update available 10.10.3 - I always download all that are offered. 10.10.3 loaded, and I proceeded to open iTines and iPhoto and plug in my iPhone, All went well until I notic
-
Problem Statement: I have created a utility(using JavaMail API) which downloads mails from the Exchange Server 2003(MS Windows server 2003) using IMAP service. The utility uses 5 different threads(each creating it's own separate IMAP session) to down
-
Bizarre VPN behavior with Cymphonix Web Filtering Device
We just purchased some Cymphonix web filtering devices. These devices sit in-line (as a bridge) on the way from our internal network to the inside interface of our failover pair of 5520 ASAs. The ASAs are active/passive, single context. The softwa
-
I am trying to update itunes and keep geting message that it can't find path to iTunes64.msi