I need a single query ?
Hi
My emp table consists of 10 records .
empcode empname
1 abc
2 bcd
10 zzz
Now i need a single select query to display the empcode in a single row
output should be in 1 2 3 ...10
Thanks
Jeny
Hi,
Searching for "Row to Column", like Nicolas said, will find lots of relevant pages, and a lot about turning n rows into n columns. If you want to turn n rows into one column, searching for "String Aggregation" might be better. (Even though 1, 2, 3, ..., 10 are numbers, '1 2 3 ... 10' is a string.)
Similar Messages
-
Need a single query for all IF conditions
I have the following requirements which looks at two parameter p_batch and p_frequency and frames a select to query from the Employers table.
Can I achieve all these in a single select statement? If so how to do it?
Please help.
Thank you.
IF p_batch = 1 and p_frequency = 2 then
SELECT er.employer_id
FROM employers er
WHERE SUBSTR (er.name, 1, 1) BETWEEN 'A' AND 'M'
AND er.freq_flag = 2
ORDER BY er.name asc;
ELSIF p_batch = 2 and p_frequency = 2 then
Open cursor for processing employer starting with N to Z
SELECT er.employer_id
FROM employers er
WHERE SUBSTR (er.name, 1, 1) BETWEEN 'N' AND 'Z'
AND er.freq_flag = 2
ORDER BY er.name asc;
ELSIF p_batch = 1 and p_frequency = 1 then
Open cursor for processing employer starting with A to M for all ER
SELECT er.employer_id
FROM employers er
WHERE SUBSTR (er.name, 1, 1) BETWEEN 'A' AND 'M'
ORDER BY er.name asc;
ELSIF p_batch = 2 and p_frequency = 1 then
Open cursor for processing employer starting with N to Z for all ER
SELECT er.employer_id
FROM wweb.ptei_employers er
WHERE SUBSTR (er.name, 1, 1) BETWEEN 'N' AND 'Z'
ORDER BY er.name asc;
ELSE
-- Return as no need to send any mails
END IF;Hi,
Sure, you can do that in a single statement. Here's one way:
SELECT employer_id
FROM employers
WHERE SUBSTR (name, 1, 1) BETWEEN CASE p_batch
WHEN 1 THEN 'A'
WHEN 2 THEN 'N'
END
AND CASE p_batch
WHEN 1 THEN 'M'
WHEN 2 THEN 'Z'
END
AND ( ( p_frequency = 2
AND freq_flag = 2
OR p_frequency = 1
ORDER BY name
; -
Need help with query joining several tables into a single return line
what i have:
tableA:
puid, task
id0, task0
id1, task1
id2, task2
tableB:
puid, seq, state
id0, 0, foo
id0, 1, bar
id0, 2, me
id1, 0, foo
id2, 0, foo
id2, 1, bar
tableC:
puid, seq, date
id0, 0, 12/21
id0, 1, 12/22
id0, 2, 12/22
id1, 0, 12/23
id2, 0, 12/22
id2, 1, 12/23
what i'd like to return:
id0, task0, 12/21, 12/22, 12/22
id1, task1, 12/23, N/A, N/A
id2, task2, 12/22, 12/23, N/A
N/A doesn't mean return the string "N/A"... it just means there was no value, so we don't need anything in this column (null?)
i can get output like below through several joins, however i was hoping to condense each "id" into a single line...
id0, task0, 12/21
id0, task0, 12/22
id0, task0, 12/23
id1, task1, 12/23
is this possible fairly easily?
Edited by: user9979830 on Mar 29, 2011 10:53 AM
Edited by: user9979830 on Mar 29, 2011 10:58 AMHi,
Welcome to the forum!
user9979830 wrote:
what i have:...Thanks for posting that so clearly!
Whenever you have a question, it's even better if you post CREATE TABLE and INSERT statements for your sample data, like this:
CREATE TABLE tablea
( puid VARCHAR2 (5)
, task VARCHAR2 (5)
INSERT INTO tablea (puid, task) VALUES ('id0', 'task0');
INSERT INTO tablea (puid, task) VALUES ('id1', 'task1');
INSERT INTO tablea (puid, task) VALUES ('id2', 'task2');
CREATE TABLE tablec
( puid VARCHAR2 (5)
, seq NUMBER (3)
, dt DATE -- DATE is not a good column name
INSERT INTO tablec (puid, seq, dt) VALUES ('id0', 0, DATE '2010-12-21');
INSERT INTO tablec (puid, seq, dt) VALUES ('id0', 1, DATE '2010-12-22');
INSERT INTO tablec (puid, seq, dt) VALUES ('id0', 2, DATE '2010-12-22');
INSERT INTO tablec (puid, seq, dt) VALUES ('id1', 0, DATE '2010-12-23');
INSERT INTO tablec (puid, seq, dt) VALUES ('id2', 0, DATE '2010-12-22');
INSERT INTO tablec (puid, seq, dt) VALUES ('id2', 1, DATE '2010-12-23');This way, people can re-create the problem and test their ideas.
It doesn't look like tableb plays any role in this problem, so I didn't post it.
Explain how you get the results from that data. For example, why do you want this row in the results:
PUID TASK DT1 DT2 DT3
id0 task0 12/21/2010 12/22/2010 12/22/2010rather than, say
PUID TASK DT1 DT2 DT3
id0 task0 12/22/2010 12/21/2010 12/22/2010? Does 12/21 have to go in the first column because it is the earliest date, or is it because 12/21 is related to the lowest seq value? Or do you even care about the order, just as long as all 3 dates are shown?
Always say what version of Oracle you're uisng. The query below will work in Oracle 9 (and up), but starting in Oracle 11, the SELECT ... PIVOT feature could help you.
i can get output like below through several joins, however i was hoping to condense each "id" into a single line... Condensing the output, so that there's only one line for each puid, sounds like a job for "GROUP BY puid":
WITH got_r_num AS
SELECT puid
, dt
, ROW_NUMBER () OVER ( PARTITION BY puid
ORDER BY seq -- and/or dt
) AS r_num
FROM tablec
-- WHERE ... -- If you need any filtering, put it here
SELECT a.puid
, a.task
, MIN (CASE WHEN r.r_num = 1 THEN r.dt END) AS dt1
, MIN (CASE WHEN r.r_num = 2 THEN r.dt END) AS dt2
, MIN (CASE WHEN r.r_num = 3 THEN r.dt END) AS dt3
, MIN (CASE WHEN r.r_num = 4 THEN r.dt END) AS dt4
FROM tablea a
JOIN got_r_num r ON a.puid = r.puid
GROUP BY a.puid
, a.task
ORDER BY a.puid
;I'm guessing that you want the dates arranged by seq; that is, for each puid, the date related to the lowest seq comes first, regardless of whther that date is the earliest date for that puid or not. If that's not what you need, then change the analytic ORDER BY clause.
This does not assume that the seq values are always consecutive integers (0, 1, 2, ...) for each puid. You can skip, or even duplicate values. However, if the values are always consecutive integers, starting from 0, then you could simplify this. You won't need a sub-query at all; just use seq instead of r_num in the main query.
Here's the output I got from the query above:
PUID TASK DT1 DT2 DT3 DT4
id0 task0 12/21/2010 12/22/2010 12/22/2010
id1 task1 12/23/2010
id2 task2 12/22/2010 12/23/2010As posted, the query will display the first 4 dts for each puid.
If there are fewer than 4 dts for a puid, the query will still work. It will leave some columns NULL at the end.
If there are more than 4 dts for a puid, the query will still work. It will display the first 4, and ignore the others.
There's nothing special about the number 4; you could make it 3, or 5, or 35, but whatever number you choose, you have to hard-code that many columns into the query, and always get that many columns of output.
For various ways to deal with a variable number of pivoted coolumns, see the following thread:
PL/SQL
This question actually doesn't have anything to do with SQL*Plus; it's strictly a SQL question, and SQL questions are best posted on the "SQL and PL/SQL" forum:
PL/SQL
If you're not sure whether a question is more of a SQL question or a SQL*Plus question, then post it on the SQL forum. Many more people pay attention to that forum than to this one. -
Need different rows from single query based on condition
Hi,
I have a table with 100 rows that holds employees and their roles.
I need to write a SQL(not a PL/SQL block) as below
1. When employee with role 'VP' logs in, the query should return all the 100 rows.
2. When employee with role 'MGR' logs in, the query should return only those rows whose MGR is the logged in employee.
3. When employee with role 'SALE_EXEC' logs in, it should return single rows corresponding to this SALE_EXEC.
My requirement here is to get these outputs from a single query.
Can anyone please help me with this.
Thanks,
Vivek.use vpd
New Policy Groups
When adding the policy to a table, view, or synonym, you can use the DBMS_RLS.ADD_GROUPED_POLICY interface to specify the group to which the policy belongs. To specify which policies will be effective, you add a driving context using the DBMS_RLS.ADD_POLICY_CONTEXT interface. If the driving context returns an unknown policy group, then an error is returned.
If the driving context is not defined, then all policies are executed. Likewise, if the driving context is NULL, then policies from all policy groups are enforced. In this way, an application accessing the data cannot bypass the security setup module (which sets up application context) to avoid any applicable policies.
You can apply multiple driving contexts to the same table, view, or synonym, and each of them will be processed individually. In this way, you can configure multiple active sets of policies to be enforced.
Consider, for example, a hosting company that hosts Benefits and Financial applications, which share some database objects. Both applications are striped for hosting using a SUBSCRIBER policy in the SYS_DEFAULT policy group. Data access is partitioned first by subscriber ID, then by whether the user is accessing the Benefits or Financial applications (determined by a driving context). Suppose that Company A, which uses the hosting services, wants to apply a custom policy which relates only to its own data access. You could add an additional driving context (such as COMPANY A SPECIAL) to ensure that the additional, special policy group is applied for data access for Company A only. You would not apply this under the SUBSCRIBER policy, because the policy relates only to Company A, and it is more efficient to segregate the basic hosting policy from other policies.
How to Implement Policy Groups
To create policy groups, the administrator must do two things:
Set up a driving context to identify the effective policy group.
Add policies to policy groups as required.
The following example shows how to perform these tasks.
Note:
You need to set up the following data structures for the examples in this section to work:
DROP USER finance CASCADE;
CREATE USER finance IDENTIFIED BY welcome2;
GRANT RESOURCE TO apps;
DROP TABLE apps.benefit;
CREATE TABLE apps.benefit (c NUMBER);
Step 1: Set Up a Driving Context
Begin by creating a namespace for the driving context. For example:
CREATE CONTEXT appsctx USING apps.apps_security_init;
Create the package that administers the driving context. For example:
CREATE OR REPLACE PACKAGE apps.apps_security_init IS
PROCEDURE setctx (policy_group VARCHAR2);
END;
CREATE OR REPLACE PACKAGE BODY apps.apps_security_init AS
PROCEDURE setctx ( policy_group varchar2 ) IS
BEGIN
REM Do some checking to determine the current application.
REM You can check the proxy if using the proxy authentication feature.
REM Then set the context to indicate the current application.
DBMS_SESSION.SET_CONTEXT('APPSCTX','ACTIVE_APPS', policy_group);
END;
END;
Define the driving context for the table APPS.BENEFIT.
BEGIN
DBMS_RLS.ADD_POLICY_CONTEXT('apps','benefit','APPSCTX','ACTIVE_APPS');
END;
Step 2: Add a Policy to the Default Policy Group.
Create a security function to return a predicate to divide the data by company.
CREATE OR REPLACE FUNCTION by_company (sch varchar2, tab varchar2)
RETURN VARCHAR2 AS
BEGIN
RETURN 'COMPANY = SYS_CONTEXT(''ID'',''MY_COMPANY'')';
END;
Because policies in SYS_DEFAULT are always executed (except for SYS, or users with the EXEMPT ACCESS POLICY system privilege), this security policy (named SECURITY_BY_COMPANY), will always be enforced regardless of the application running. This achieves the universal security requirement on the table: namely, that each company should see its own data regardless of the application that is running. The function APPS.APPS_SECURITY_INIT.BY_COMPANY returns the predicate to make sure that users can only see data related to their own company:
BEGIN
DBMS_RLS.ADD_GROUPED_POLICY('apps','benefit','SYS_DEFAULT',
'security_by_company',
'apps','by_company');
END;
Step 3: Add a Policy to the HR Policy Group
First, create the HR group:
CREATE OR REPLACE FUNCTION hr.security_policy
RETURN VARCHAR2
AS
BEGIN
RETURN 'SYS_CONTEXT(''ID'',''TITLE'') = ''MANAGER'' ';
END;
The following creates the policy group and adds a policy named HR_SECURITY to the HR policy group. The function HR.SECURITY_POLICY returns the predicate to enforce security on the APPS.BENEFIT table:
BEGIN
DBMS_RLS.CREATE_POLICY_GROUP('apps','benefit','HR');
DBMS_RLS.ADD_GROUPED_POLICY('apps','benefit','HR',
'hr_security','hr','security_policy');
END;
Step 4: Add a Policy to the FINANCE Policy Group
Create the FINANCE policy:
CREATE OR REPLACE FUNCTION finance.security_policy
RETURN VARCHAR2
AS
BEGIN
RETURN ('SYS_CONTEXT(''ID'',''DEPT'') = ''FINANCE'' ');
END;
Create a policy group named FINANCE and add the FINANCE policy to the FINANCE group:
BEGIN
DBMS_RLS.CREATE_POLICY_GROUP('apps','benefit','FINANCE');
DBMS_RLS.ADD_GROUPED_POLICY('apps','benefit','FINANCE',
'finance_security','finance', 'security_policy');
END;
As a result, when the database is accessed, the application initializes the driving context after authentication. For example, with the HR application:
execute apps.security_init.setctx('HR');
Validating the Application Used to Connect to the Database
The package implementing the driving context must correctly validate the application that is being used to connect to the database. Although the database always checks the call stack to ensure that the package implementing the driving context sets context attributes, inadequate validation can still occur within the package.
For example, in applications where database users or enterprise users are known to the database, the user needs the EXECUTE privilege on the package that sets the driving context. Consider a user who knows that:
The BENEFITS application allows more liberal access than the HR application
The setctx procedure (which sets the correct policy group within the driving context) does not perform any validation to determine which application is actually connecting. That is, the procedure does not check either the IP address of the incoming connection (for a three-tier system) or the proxy_user attribute of the user session.
Such a user could pass to the driving context package an argument setting the context to the more liberal BENEFITS policy group, and then access the HR application instead. Because the setctx does no further validation of the application, this user bypasses the normally more restrictive HR security policy.
By contrast, if you implement proxy authentication with VPD, then you can determine the identity of the middle tier (and the application) that is actually connecting to the database on behalf of a user. In this way, the correct policy will be applied for each application to mediate data access.
For example, a developer using the proxy authentication feature could determine that the application (the middle tier) connecting to the database is HRAPPSERVER. The package that implements the driving context can thus verify whether the proxy_user in the user session is HRAPPSERVER. If so, then it can set the driving context to use the HR policy group. If proxy_user is not HRAPPSERVER, then it can disallow access.
In this case, when the following query is executed
SELECT * FROM APPS.BENEFIT;
Oracle Database picks up policies from the default policy group (SYS_DEFAULT) and active namespace HR. The query is internally rewritten as follows:
SELECT * FROM APPS.BENEFIT WHERE COMPANY = SYS_CONTEXT('ID','MY_COMPANY') and SYS_CONTEXT('ID','TITLE') = 'MANAGER';
How to Add a Policy to a Table, View, or Synonym
The DBMS_RLS package enables you to administer security policies by using its procedures for adding, enabling, refreshing, or dropping policies, policy groups, or application contexts. You need to specify the table, view, or synonym to which you are adding a policy, as well as the data pertinent to that policy, such as the policy name. Such data also includes names for the policy group and the function implementing the policy. You can also specify the types of statements the policy controls (SELECT, INSERT, UPDATE, DELETE, CREATE INDEX, or ALTER INDEX).
for more you can refer to
http://download-west.oracle.com/docs/cd/B19306_01/network.102/b14266/apdvcntx.htm -
Need to display count and report both by using single Query
Hi All,
I got any requirement in that i need to display count and report both.
Like
Count os Unassigned=20
Count of Assined=23
Sr name summary etc ......
1 dssss sdsds dsds
2 sdada sdsd sdsds
3 dadad afds sdada And the problem is ,My Application is providing the single window where i can put a single query
so pls help me with thisI think you need to do it like this:
WITH x AS (
SELECT DECODE(name,NULL,0,1) AS ind, COUNT(*) AS counter FROM your_table
GROUP BY DECODE(name,NULL,0,1)
UNION SELECT 1,0 FROM dual
UNION SELECT 0,0 FROM dual)
SELECT DECODE(ind,0,'Count os Unassigned=','Count of Assined=') ||
TO_CHAR(SUM(counter)) FROM x GROUP BY ind;Replace your_table with whatever your table is called. -
qn. Field1
112
121
222
444
333
ans. Field1
444
333
222
112
121
let me know the answer .a single query for thisi assume it is not
ans. Field1
444
333
222
112
121
it is
ans. Field1
444
333
222
121
112
just do ORDER BY Field1 DESC -
Multiple databases in a single query
I need to query multiple databases in a single query.
e.g.
Database d1 contains table t1 with column id
Database d2 contains table t2 with column id
I need a query like
SELECT * FROM t1, t2 WHERE t1.id = t2.id;
is this possible in jdbc? if yes can anyone help with some sample code?
thanks,
Ashish SarafIt is not possible using the JDBC API to query tables in two or more databases using a single query. The reason is that a JDBC Connection is made to a single data source.
However, some databases support the idea of federations or linked tables. What you do is inside the database manager link or federate a table that is present in another DBMS. Then, pose a single JDBC query to the one DBMS which will have its own table and links to the external tables.
Another approach is to use a special JDBC driver with a built-in integration engine that will perform a query across multiple databases. In effect, the system poses separate queries to the different databases and integrates and joins the data together for you automatically on the client-side. That is much easier than doing it yourself in code, but that is also possible for simple queries.
As part of my research program, we have released a shareware version of the UnityJDBC driver that can query multiple databases using a single SQL query. For more information, see:
http://www.unityjdbc.com
http://www.cs.uiowa.edu/~rlawrenc/research/projects.html
Sincerely,
Dr. Ramon Lawrence
Assistant Professor
Department of Computer Science
University of Iowa
[email protected] -
Multiple conditin on a single column in a single query
i want to select data from the table using diff conditions on a single column
for eg:
i need emp details like whose having empno as 5-15,19-45,50-89 ..etc this how can i give a condition in a single query
we can use in or between for 2 or 3 conditions but i have plenty off like thisHi,
848525 wrote:
i want to select data from the table using diff conditions on a single column
for eg:
i need emp details like whose having empno as 5-15,19-45,50-89 ..etc this how can i give a condition in a single query
we can use in or between for 2 or 3 conditions but i have plenty off like thisYou can use OR for any number of conditions; it works the same for 4 or more.
You could also put the ranges into a table (or a sub-query, as shown below) and join:
WITH empno_ranges AS
SELECT 3000 AS low_val, 5000 AS high_val FROM dual UNION ALL
SELECT 7000, 7499 FROM dual UNION ALL
SELECT 7500, 7599 FROM dual UNION ALL
SELECT 7800, 7899 FROM dual
SELECT r.*
, COUNT (e.empno) AS emp_cnt
FROM empno_ranges r
LEFT OUTER JOIN scott.emp e ON e.empno BETWEEN r.low_val
AND r.high_val
GROUP BY r.low_val, r.high_val
ORDER BY r.low_val
;Output:
LOW_VAL HIGH_VAL EMP_CNT
3000 5000 0
7000 7499 2
7500 7599 2
7800 7899 3 -
Tricky SQL query... how to get all data in a single query?
create table employee_definition (def_id number, def_name varchar(50));
insert into employee_definition values (100, 'EMAIL');
insert into employee_definition values (200, 'MOBILE_PHONE');
insert into employee_definition values (300, 'HOME_PHONE');
SQL> select * from employee_definition;
DEF_ID DEF_NAME
100 EMAIL
200 MOBILE_PHONE
300 HOME_PHONE
create table employee_data (def_id number, def_value varchar(20), emp_id number);
insert into employee_data values (100, '[email protected]', 123);
insert into employee_data values (200, '01232222', 123);
insert into employee_data values (300, '5555', 123);
insert into employee_data values (100, '[email protected]', 666);
insert into employee_data values (200, '888', 666);
insert into employee_data values (300, '999', 666);
insert into employee_data values (300, '444', 777);
SQL> select * from employee_data;
DEF_ID DEF_VALUE EMP_ID
100 [email protected] 123
200 01232222 123
300 5555 123
100 [email protected] 666
200 888 666
300 999 666
300 999 777
7 rows selected.I'm supposed to create a SQL that will return me the email, mobile_phone, and home_phone for a set of employees. The result will be something like this:
EMPLOYEE ID | HOME_PHONE | MOBILE_PHONE | EMAIL
123 | 5555 | 01232222 | [email protected]
666 | 999 | 888 | [email protected]
777 | 444 | null | nullThe thing I'm finding difficulty here is that the same column is used to store different values, based on the value in employee_definition table (something like a key/value pair). If I do:
SQL> select emp_id, def_value as email from employee_data, employee_definition
2 where employee_data.def_id = employee_definition.def_id
3 and employee_definition.def_name = 'EMAIL';
EMP_ID EMAIL
123 [email protected]
666 [email protected]'s partially ok.. I'm just getting the definition for 'EMAIL'. But how can I get all the values in a single query, knowing that the column stores different values based on def_name?Oh no, not again.
Entity attribute models always seem like a great idea to people who have been in the profession for five minutes and lack any kind of fundamental knowledge.
It staggers me that someone with 2,345 posts still believes "you need a 'detail table' for [storing multiple telephone numbers]"
"A person can have multiple telephone numbers" is not an excuse to build a tired person_attribute table. Niether is the bizarre proposal by someone with over 4k posts who should know better in an earlier post that EAV models are necessary to support temporal fidelity.
Taken to it's logical conclusion, EAV modelling leads to just two application tables. THINGS and THING_ATTRIBUTES. And when you consider that a THING_ATTRIBUTE is also a THING, why not roll those two tables up into one also? Hmmm, what does THINGS and THING_ATTRIBUTES look like? I know, TABLES and COLUMNS. Who would've guessed? SQL already provides the completely flexible extensible attribute model the advocates of EAV proscribe. But it also has data types, physical data independence, constraints and an efficient query language which EAV does not.
EAV modelling errodes the semantics of the attributes which are bundled into the "attribute" table.
There is no point in storing 12 different phone numbers with implied functional dependency to unconstrained and often repeating notional attributes like "MOBILE", "LANDLINE", "WORK", err, "WORK2", err, "MOBILE2", err, ... when this phone type attribute has no semantic value. When you want to call someone, you invariably want to retrive the prefered_phone_number which may depend on a time of day, or a call context.
These things need to be modelled properly (i.e normalised to BCNF) within the context of the database. -
How to find Special Characters in a single query
Dear Experts,
Your usual help is required to solve the query.My query is "How to find all special characters like (%$*&@,;'/+- etc. in a single query?"
Thanks.
e.g.
A_MIR
A%SIM
A*SIM
A)SIMHi,
947459 wrote:
Dear Experts,
Your usual help is required to solve the query.My query is "How to find all special characters like (%$*&@,;'/+- etc. in a single query?"
Thanks.
e.g.
A_MIR
A%SIM
A*SIM
A)SIMIt's not clear what you want.
What are "special characters"? Can you list all of them?
Do you want to find rows where string_column contains any of the special characters? If so
SELECT string_column
FROM table_x
WHERE string_column != NVL ( TRANSLATE ( string_column
, 'A(%$*&@,;'/+-'
, 'A'
, 'A'
;I assume 'A' is not a special character.
You could also use regular expressions, but it will be more efficient if you don't use them unless you really need to.
I hope this answers your question.
If not, post a little sample data (CREATE TABLE and INSERT statements), and the results you want from that data.
Explain, using specific examples, how you get those results from that data.
Always say what version of Oracle you're using (e.g. 11.2.0.2.0).
See the forum FAQ {message:id=9360002}
You'll get better replies sooner if you always include this information whenever you have a question. -
Tab1
Parent Child sa l
P1 A1 4000
A1 A 1000
A1 B 4000
A X 1000
A Y 2000
B X1 1000
B X2 3000I need to build a query that will retrieve the value for each child as the sum of the salaries of all its child in a single query.
That is
For Sal P1 = Sal A1 + all child of A1 and its child
For A1 = Sal A1 + all child of A1 and its child ( A+B+X+Y+X1+X2)
Like it should sho all the records with the count .. please helpThis is not so simple since it is not really clear in your data set whether the sal belongs to the parent or to the child. I assume it's the salary of the child, in which case the salary of P1 is missing. The best option is to fix the data model and have two tables: one containing the element and sal, and another table containing just the relationships. To fix this issue I introduced a dummy record for P1 and salary 0.
SQL> with t2 as
2 ( select connect_by_root(child) cbr
3 , sal
4 from (select * from t union all select null,'P1',0 from dual)
5 connect by parent = prior child
6 )
7 select cbr child
8 , sum(sal)
9 from t2
10 group by cbr
11 /
CHILD SUM(SAL)
X1 1000
A1 16000
X2 3000
P1 16000
Y 2000
X 1000
A 4000
B 8000
8 rows selected.Regards,
Rob. -
How to calculate the area of a large number of polygons in a single query
Hi forum
Is it possible to calculate the area of a large number of polygons in a single query using a combination of SDO_AGGR_UNION and SDO_AREA? So far, I have tried doing something similar to this:
select sdo_geom.sdo_area((
select sdo_aggr_union ( sdoaggrtype(mg.geoloc, 0.005))
from mapv_gravsted_00182 mg
where mg.dblink = 521 or mg.dblink = 94 or mg.dblink = 38 <many many more....>),
0.0005) calc_area from dualThe table MAPV_GRAVSTED_00182 contains 2 fields - geoloc (SDO_GEOMETRY) and dblink (Id field) needed for querying specific polygons.
As far as I can see, I need to first somehow get a single SDO_GEOMETRY object and use this as input for the SDO_AREA function. But I'm not 100% sure, that I'm doing this the right way. This query is very inefficient, and sometimes fails with strange errors like "No more data to read from socket" when executed from SQL Developer. I even tried with the latest JDBC driver from Oracle without much difference.
Would a better approach be to write some kind of stored procedure, that adds up all the single geometries by adding each call to SDO_AREA on each single geometry object - or what is the best approach?
Any advice would be appreciated.
Thanks in advance,
JacobHi
I am now trying to update all my spatial table with SRID's. To do this, I try to drop the spatial index first to recreate it after the update. But for a lot of tables I can't drop the spatial index. Whenever I try to DROP INDEX <spatial index name>, I get this error - anyone know what this means?
Thanks,
Jacob
Error starting at line 2 in command:
drop index BSSYS.STIER_00182_SX
Error report:
SQL Error: ORA-29856: error occurred in the execution of ODCIINDEXDROP routine
ORA-13249: Error in Spatial index: cannot drop sequence BSSYS.MDRS_1424B$
ORA-13249: Stmt-Execute Failure: DROP SEQUENCE BSSYS.MDRS_1424B$
ORA-29400: data cartridge error
ORA-02289: sequence does not exist
ORA-06512: at "MDSYS.SDO_INDEX_METHOD_10I", line 27
29856. 00000 - "error occurred in the execution of ODCIINDEXDROP routine"
*Cause: Failed to successfully execute the ODCIIndexDrop routine.
*Action: Check to see if the routine has been coded correctly.
Edit - just found the answer for this in MetaLink note 241003.1. Apparently there is some internal problem when dropping spatial indexes, some objects gets dropped that shouldn't be. Solution is to manually create the sequence it complains it can't drop, then it works... Weird error. -
2 workbooks for a single query r not coming in portal.
hi experts... first of all i donno whether this question belong to bex side or portal side...
my problem is:
i have single query with 10 workbooks.
i need to embed these workbooks in our
portal(bw report iview).
my requirement is to supply URLs for all of these workbooks to portal team, so as to enable them to embed workbooks...
while im trying to generate URLs for all workbooks,
it is just generating only one same URL for all workbooks.
i found that we can generate URL only to query default view, from our BEx side..
anybody can help me that how to generate different URLs for different workbooks based on a single query.
this is not a portal issue...
i shud supply proper URLs for each workbook.
hope i can get a solution from experts...
thank u all
nithinGo through the following link
http://help.sap.com/saphelp_nw04/helpdata/en/4d/f3fa40badbf36fe10000000a1550b0/content.htm
I hope this helps.
Best Regards,
Kiran -
How to Filter a filtered Query with in a single query
Hi all,
Thanks in advance , Below is the query
SELECT *
FROM
(SELECT MitarbeiterListe.IDMITARBEITERLISTE,
MITARBEITERLISTE.JAHR ,
MITARBEITERLISTE.mitarbeiter ,
FIRMA.FIRMA ,
Abteilung.Abteilung ,
MitarbeiterStatus.mitarbeiterstatus ,
MitarbeiterListe.OEVON ,
MitarbeiterListe.OEBIS ,
MitarbeiterListe.SAPPERSNR ,
MitarbeiterListe.EKPreis
||'.00' "MitarbeiterListe.EKPreis",
MitarbeiterListe.InfrastrukturkostenZuschlag
||'.00' "InfrastrukturkostenZuschlag",
MitarbeiterListe.VerwaltungskostenZuschlag*100
||'%' "VerwaltungskostenZuschlag",
MitarbeiterListe.Tagessatz ,
MitarbeiterListe.Arbeitsort ,
MitarbeiterListe.Titel ,
MitarbeiterListe.Bemerkung ,
BERECHTIGUNGEN.BENUTZERNAME
FROM Firma
INNER JOIN (Abteilung
INNER JOIN MitarbeiterListe
ON Abteilung.IDAbteilung = MitarbeiterListe.IDAbteilung
INNER JOIN MitarbeiterStatus
ON MitarbeiterListe.IDMITARBEITERSTATUS=MitarbeiterStatus.IDMITARBEITERSTATUS
INNER JOIN BERECHTIGUNGEN
ON MITARBEITERLISTE.IDBEARBEITER=BERECHTIGUNGEN.IDBENUTZER )
ON Firma.IDFirma = MitarbeiterListe.IDFirma
WHERE MitarbeiterListe.Jahr = :P9_SEL_JAHR
AND Abteilung.IDOE =
( SELECT IDOE FROM OE WHERE OE = :P9_SEL_OE AND JAHR = :P9_SEL_JAHR
) temp
Requirement is : we need to filter this query again based on column in select list . As using AND / OR operator we are not able to give desired result ..
As in our case we are filtering the above query based on :P9_SEL_JAHR and :P9_SEL_OE variables ther is further requirement that we can also filter the filtered given query based on column vaue so we can get the specific columns value through bind variables and can use OR operator between them .but the problem is coming on merging the columns where case with the given query ..
As for example if we use this afer the query
OR/AND
MitarbeiterStatus.mitarbeiterstatus = :P9_SL_MA_STAT OR
MitarbeiterListe.OEVON = :P9_SL_OEVON OR
MitarbeiterListe.OEBIS = :P9_SL_OEBIS OR
MitarbeiterListe.SAPPERSNR = :P9_SL_SAPPERNR
for the OR case the first query will be always true so it will not filter it baseed on column value and in case of AND the second query would return true ..so we would get filtered column value based on column bind varaible not the complete query result based on JAHR and OE bind variable.
any way to satisfy these two cases within a single query ..suggesstions are welcomed and would be truly appreciated.
Cheers
sachinNot certain I've fully understood your required logic without examples, but I think you just need to use brackets:
WHERE MitarbeiterListe.Jahr = :P9_SEL_JAHR
AND Abteilung.IDOE =
( SELECT IDOE FROM OE WHERE OE = :P9_SEL_OE AND JAHR = :P9_SEL_JAHR)
AND
MitarbeiterStatus.mitarbeiterstatus = :P9_SL_MA_STAT
OR MitarbeiterListe.OEVON = :P9_SL_OEVON
OR MitarbeiterListe.OEBIS = :P9_SL_OEBIS
OR MitarbeiterListe.SAPPERSNR = :P9_SL_SAPPERNR
) -
How to use SEM_RELATED & SEM_MATCH in a single query
Hi,
I am trying to combine RDF and RDBMS data using SEM_RELATED.
Below sample is working fine but the requirement is i have to add few more conditions in SEM_MATCH
Please suggest me how to combine sem_match and sem_related in a single query.
Please provide me the example which use SEM_MATCH and SEM_RELATED in a single query.
SELECT distinct dg_term_property.CONTEXT_NM FROM dg_term_property,dg_term
WHERE SEM_RELATED ('<http://www.cs.com/mdm/data_glossary#Facilities>',
'<http://www.w3.org/2000/01/rdf-schema#subClassOf>',
'<http://www.cs.com/mdm/data_glossary#Reference_Data_Classes>',
sem_models('GSR_PR_CURR'), sem_rulebases('owlprime')) = 1
and DG_TERM.TERM_NM=DG_TERM_PROPERTY.TERM_NM;
Let me know if you need any other details.
Regards,
Kavitha.Hi Kavitha,
I am not sure what exactly you are trying to accomplish with this query but the use of the SEM_RELATED is incorrect. To fulfill your requirement most likely you may not even need to combine SEM_RELATED with SEM_MATCH. Actually those two are not built to be used together.
Take a look at the SEM_RELATED documentation and see if you can use it to get the results you need. The example that you are providing is not using the SEM_RELATED correctly.
Here is the documentation:
http://docs.oracle.com/cd/E11882_01/appdev.112/e25609/owl_concepts.htm#CHDJBGFI
Go to:
2.3 Using Semantic Operators to Query Relational Data
Regards!
Jorge
Edited by: jbarba on Aug 20, 2012 10:20 AM
Edited by: jbarba on Aug 20, 2012 10:21 AM
Maybe you are looking for
-
hi gurus I have used function module CONVERT_ABAPSPOOLJOB_2_PDF for converting spool to pdf format , now i need to send email using methods and class ( not with FM SO_DOCUMENT_SEND_API1 ) . iam useing TRY. -------- create persistent send reques
-
What should I expect in quality? Make video better? optimize?
Hello I'm using iChat 3.1 for the first time. I have tried using both a AIM account and .mac account. The software works fine for me. My question is 1) what should I expect in terms of video quality? Is there something out there I can compare it to?
-
Upgrading from an iPod Video to an iPod Touch
I was just wondering if there is a way to possibly trade in my ipod video and so that I get a bit of a discount on the ipod touch? Do I have to do this through the apple store or the best buy where i originally bought my video?
-
Report on user wise application wise page views
How to get the application and user wise page view report in apex? Sanjay
-
I have enabled Apple Remote Management sharing in my Mac OSX Server Leopard, and i can control it from my machine and everything works fine, but when i restart the machine and when it leads to the login window, the apple remote desktop shows me "ARD