Help with self join query
Hello people,
I have the table MENUS on 9i with the folowing fields:
MENU_ID, PARENT_ID, MENUNAME,...
and some sample data:
0,999999,ROOT
7,0,NETWORK
6,0,SERVICES
100,0,CUSTOMERS
74,7,MONITORING
88889081,7,CONFIG
88890006,7,TEST
88890049,7 TEST II
88889163,6,MAIL
61,6,SMS
So PARENT_ID shows under which menu the submenu exists.
I need to create the below report:
ROOT
*NETWORK
**CONFIG
**TEST
**TEST II
*SERVICES
**MAIL
**SMS
*CUSTOMERS
Stars or any other way to identify the level depth will be very handful.
Thank you in advance.
Hi,
Try to relate with this example on emp table.
select empno,ename,level,sys_connect_by_path(ename,'/') as path
from emp
start with mgr is null
connect by prior empno=mgrOutput
EMPNO ENAME LEVEL PATH
7839 KING 1 /KING
7566 JONES 2 /KING/JONES
7788 SCOTT 3 /KING/JONES/SCOTT
7876 ADAMS 4 /KING/JONES/SCOTT/ADAMS
7902 FORD 3 /KING/JONES/FORD
7369 SMITH 4 /KING/JONES/FORD/SMITH
7698 BLAKE 2 /KING/BLAKE
7499 ALLEN 3 /KING/BLAKE/ALLEN
7521 WARD 3 /KING/BLAKE/WARD
7654 MARTIN 3 /KING/BLAKE/MARTIN Hope it helps
CKLP
Similar Messages
-
Need help with self join query
Hello,
I have table A with the following data
oid parent_oid
10 4
4 2
2 2
12 6
6 6
parent_oid is the parent of oid. I'd like a query that shows the final parent of the oid. The result should show the following
oid final parent
10 2
4 2
2 2
12 6
6 6
I'm using Oracle 10g. I'm familiar with self joins, but that alone will not do the job. Thanks!Hi,
arizona9952 wrote:
... I'm familiar with self joins, but that alone will not do the job.You're absolutely right!
A 2-way self join would work for rows have no parent, or rows that are directly connected to their final ancestor (such as oid=4), but not for anything farther away.
A 3-way self-join would work for one more level away from the final row, but no more. That would be enough for the small set of sample data that you posted, but it would not work if you added a new row with parent_id=10.
An N-way self-join would work for up to N+1 levels, but no more.
You need something that can go any number of levels, such as CONNECT BY:
SELECT CONNECT_BY_ROOT oid AS oid
, parent_oid AS final_parent
FROM a
WHERE CONNECT_BY_ISLEAF = 1
CONNECT BY oid = PRIOR parent_oid
AND oid != parent_oid
;Edited by: Frank Kulash on Feb 22, 2010 7:09 PM
Upon sober reflection, I think that a Top-Down query, like the one below, would be more efficient than a Bottom-Up query, like the one above:
SELECT oid
, CONNECT_BY_ROOT parent_oid AS final_parent
FROM a
START WITH parent_oid = oid
CONNECT BY parent_oid = PRIOR oid
AND oid != PRIOR oid
; -
Help with Inner Join query in SQL
Hope someone can help with this, as this is quite an involved project for me, and I'm just about there with it.
My table structure is :
table_packages
packageID
package
packageDetails
etc
table_destinations
destinationID
destination
destinationDetails
etc
table_packagedestinations
packageID
destinationID
..so nothing that complicated.
So the idea is that I can have a package details page which shows the details of the package, along any destinations linked to that package via the packagedestinations table.
So this is the last part really - to get the page to display the destinations, but I'm missing something along the way....
This is the PHP from the header, including my INNER JOIN query....
PHP Code:
<?php
$ParampackageID_WADApackages = "-1";
if (isset($_GET['packageID'])) {
$ParampackageID_WADApackages = (get_magic_quotes_gpc()) ? $_GET['packageID'] : addslashes($_GET['packageID']);
$ParamSessionpackageID_WADApackages = "-1";
if (isset($_SESSION['WADA_Insert_packages'])) {
$ParamSessionpackageID_WADApackages = (get_magic_quotes_gpc()) ? $_SESSION['WADA_Insert_packages'] : addslashes($_SESSION['WADA_Insert_packages']);
$ParampackageID2_WADApackages = "-1";
if (isset($_GET['packageID'])) {
$ParampackageID2_WADApackages = (get_magic_quotes_gpc()) ? $_GET['packageID'] : addslashes($_GET['packageID']);
mysql_select_db($database_connPackages, $connPackages);
$query_WADApackages = sprintf("SELECT packageID, package, costperpax, duration, baselocation, category, dateadded, agerange, hotel, educational_tours, field_trips, corporate_outings, plant_visits, budget_package, rollingtours, teambuilding, description, offer FROM packages WHERE packageID = %s OR ( -1= %s AND packageID= %s)", GetSQLValueString($ParampackageID_WADApackages, "int"),GetSQLValueString($ParampackageID2_WADApackages, "int"),GetSQLValueString($ParamSessionpackageID_WADApackages, "int"));
$WADApackages = mysql_query($query_WADApackages, $connPackages) or die(mysql_error());
$row_WADApackages = mysql_fetch_assoc($WADApackages);
$totalRows_WADApackages = mysql_num_rows($WADApackages);
$colname_educationalDestinations = "1";
if (isset($_GET['PackageID'])) {
$colname_educationalDestinations = (get_magic_quotes_gpc()) ? packageID : addslashes(packageID);
mysql_select_db($database_connPackages, $connPackages);
$query_educationalDestinations = sprintf("SELECT * FROM destinations INNER JOIN (packages INNER JOIN packagedestinations ON packages.packageID = packagedestinations.packageID) ON destinations.destinationID = packagedestinations.destinationID WHERE packages.packageID = %s ORDER BY destination ASC", GetSQLValueString($colname_educationalDestinations, "int"));
$educationalDestinations = mysql_query($query_educationalDestinations, $connPackages) or die(mysql_error());
$row_educationalDestinations = mysql_fetch_assoc($educationalDestinations);
$totalRows_educationalDestinations = mysql_num_rows($educationalDestinations);
?>
And where I'm trying to display the destinations themselves, I have :
<table>
<tr>
<td>Destinations :</td>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_educationalDestinations['destination']; ?></td>
</tr>
<?php } while ($row_educationalDestinations = mysql_fetch_assoc($educationalDestinations)); ?>
</table>
If anyone could have a quick look and help me out that would be much appreciated - not sure if its my SQL at the top, or the PHP in the page, but either way it would be good to get it working.
Thanks.First off, you need to get the database tables so that there is a relationship between them.
In fact, if there is a one to one relationship, then it may be better to store all of your information in one table such as
table_packages
packageID
package
packageDetails
destination
destinationDetails
etc
If there is a one to many relationship, then the following would be true
packages
packageID
package
packageDetails
etc
destinations
destinationID
packageID
destination
destinationDetails
etc
The above assumes that there are many destinations to one package with the relationship coloured orange.
Once you have the above correct you can apply your query as follows
SELECT *
FROM packages
INNER JOIN destinations
ON packages.packageID = destinations.packageID
WHERE packages.packageID = %s
ORDER BY destination ASC
The above query will show all packages with relevant destinations -
I need help to optimize this query - it's taking too long and the report times out - it jins to itself:
/* Formatted on 2005/03/01 14:12 (Formatter Plus v4.8.5) */
sELECT-- /*+ FIRST_ROWS */
--SELECT /*+ ROWID*/
aud.inv_id change_value_1, aud.inv_id change_value_2,
audit_inventory_reports_pkg.get_audit_inventory_desc
(aud.inv_id) item_modified,
x.trust_xfr_code original_value, aud.trust_xfr_code new_value,
aud.inf_app_user record_modified_by,
INITCAP (aud.inf_client_info) client_package_information,
aud.inf_module application, NULL record_created_on,
aud.inf_date_change record_modified_on,
DECODE (aud.inf_action_type,
'INSERT', 'TRUST TRANSFER ADDED',
'DELETE', 'TRUST TRANSFER REMOVED',
'TRUST TRANSFER MODIFIED'
) modification_type
FROM inf_p_inventory aud, inf_p_inventory x
WHERE aud.inf_action_type = 'UPDATE'
AND x.inv_id = aud.inv_id
AND x.trust_xfr_code != aud.trust_xfr_code
AND x.inf_action_type IN ('INSERT', 'UPDATE')
AND x.inf_id IN (SELECT MAX (y.inf_id)
FROM inf_p_inventory y
WHERE y.inv_id = aud.inv_id AND y.inf_id < aud.inf_id)
AND aud.inf_date_change BETWEEN TO_DATE ('20050201', 'YYYYMMDD')
AND TO_DATE ('20050228', 'YYYYMMDD') + .99999
and rownum<10
order by aud.inf_date_change
Plan:
Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop
SELECT STATEMENT Optimizer Mode=CHOOSE 1 10158
SORT ORDER BY 1 80 10151
COUNT STOPKEY
FILTER
HASH JOIN 1 80 10138
TABLE ACCESS BY INDEX ROWID PAUDIT.INF_P_INVENTORY 24 K 1 M 4248
INDEX RANGE SCAN PAUDIT.INF_DTX_P_INV_IDX 74 K 200
TABLE ACCESS FULL PAUDIT.INF_P_INVENTORY 1 M 19 M 5424
SORT AGGREGATE 1 10 TABLE ACCESS BY INDEX ROWID PAUDIT.INF_P_INVENTORY1 10 7
INDEX RANGE SCAN PAUDIT.INF_PK_P_INV_IDX 4 3
Brand new statistics, good indexes:
CREATE TABLE INF_P_INVENTORY
INF_ID NUMBER(12) NOT NULL,
INF_ACTION_TYPE VARCHAR2(12 BYTE) NOT NULL,
INF_DATE_CHANGE DATE NOT NULL,
INF_ATLAS_PROC VARCHAR2(1 BYTE),
INF_ATTEMPTS NUMBER(12),
INF_CLIENT_INFO VARCHAR2(64 BYTE),
INF_DATE_XFRD DATE,
INF_DBL_DATE_XFRD DATE,
INF_APP_USER VARCHAR2(64 BYTE),
INF_DB_USER VARCHAR2(30 BYTE),
INF_DW_PROCESSED DATE,
INF_EXCEPTION_ID NUMBER(12),
INF_LOGON_TIME DATE,
INF_MACHINE VARCHAR2(64 BYTE),
INF_MODULE VARCHAR2(48 BYTE),
INF_OSUSER VARCHAR2(30 BYTE),
INF_PROGRAM VARCHAR2(48 BYTE),
INF_TERMINAL VARCHAR2(30 BYTE),
INV_ID NUMBER(12),
SMR_GLOBAL_NAME VARCHAR2(60 BYTE),
SMR_TIME_STAMP DATE,
PROJECT_ID VARCHAR2(4 BYTE),
UNIT_NUM VARCHAR2(6 BYTE),
SEASON_CODE VARCHAR2(3 BYTE),
SEASON_SEQ_NUM VARCHAR2(2 BYTE),
INV_STATUS_CODE VARCHAR2(3 BYTE),
ELEMENT VARCHAR2(3 BYTE),
ELEMENT_DESC VARCHAR2(35 BYTE),
OEB_CODE VARCHAR2(1 BYTE),
HOLD_CONTRACT VARCHAR2(1 BYTE),
CLUB_RELATED VARCHAR2(1 BYTE),
CLUB_USAGE_CREDITS NUMBER(12),
SELL_TYPE_CODE VARCHAR2(3 BYTE),
USAGE_TYPE_CODE VARCHAR2(3 BYTE),
MBR_CONTR_ID NUMBER(12),
HOLD_DATE DATE,
HOLD_EXP DATE,
EXP_DATE DATE,
HELD_BY_USER VARCHAR2(30 BYTE),
HOLD_REASON VARCHAR2(80 BYTE),
NUM_YRS_BOUGHT NUMBER(2),
ORIG_EXP_DATE DATE,
NUM_YRS_USED NUMBER(2),
FUTURE_EXP_DATE DATE,
APN_NUM VARCHAR2(20 BYTE),
RESALE_EXP_DATE DATE,
BOOK VARCHAR2(240 BYTE),
PAGE_NUM VARCHAR2(240 BYTE),
BOOK_PAGE_DATE DATE,
OEB_ACTIVE_DEACTIVE NUMBER(1),
GROUP_ID NUMBER(12),
STATE_INTERVAL_NUM VARCHAR2(20 BYTE),
STATE_UNIT_WK_NUM VARCHAR2(20 BYTE),
DATE_MODIFIED DATE,
MODIFIED_BY VARCHAR2(30 BYTE),
LAST_ASSESS_DATE DATE,
TRANSFER_PROJECT VARCHAR2(4 BYTE),
BATCH_ID NUMBER(12),
COURTHOUSE_CODE VARCHAR2(3 BYTE),
TRUST_XFR_CODE VARCHAR2(6 BYTE),
TRUST_XFR_CODE_REASON VARCHAR2(240 BYTE),
PTS_TRANSFER VARCHAR2(1 BYTE),
PTS_TRANSFER_DATE DATE,
TRANSFER_POINTS NUMBER,
TRANSFER_DATE DATE,
TRANSFER_BY VARCHAR2(30 BYTE),
TRANSFER_CODE VARCHAR2(1 BYTE),
LAST_ASSESSED_TO VARCHAR2(3 BYTE)
TABLESPACE xxxhow big is your inf_p_inventory table, i mean how many records does it has as compare to the other table?
-
Need help with Update Join Query
Hello, I am trying to update PID of #child table with PID of #parent table if "lastname & firstname are matches in both table" but my update query is giving some error. Please help and correct the update query. I am also trying to remove any
blank space from starting and ending.
drop table #parent,#child
create table #parent (PID varchar(10), lastname varchar(50), firstname varchar(50))
insert into #parent values ('100','Josheph','Sumali')
insert into #parent values ('400','Karen','Hunsa')
insert into #parent values ('600','Mursan ',' Terry')
create table #child (PID varchar(10), lastname varchar(50), firstname varchar(50))
insert into #child values ('2','Josheph ','Sumali ')
insert into #child values ('5','Karen','Kunsi')
insert into #child values ('6','Mursan ','Terry ')
Update #child
set PID = p.PID
from #child C Join
#parent p ON c.LTRIM(RTRIM(lastname) = p.LTRIM(RTRIM(lastname)
AND c.LTRIM(RTRIM(firstname) = p.LTRIM(RTRIM(firstname)
/* Requested Output */
PID lastname firstname
100 Josheph Sumali
600 Mursan Terrycreate table #parent (PID varchar(10), lastname varchar(50), firstname varchar(50))
insert into #parent values ('100','Josheph','Sumali')
insert into #parent values ('400','Karen','Hunsa')
insert into #parent values ('600','Mursan ',' Terry')
create table #child (PID varchar(10), lastname varchar(50), firstname varchar(50))
insert into #child values ('2','Josheph ','Sumali ')
insert into #child values ('5','Karen','Kunsi')
insert into #child values ('6','Mursan ','Terry ')
Merge #child as t
Using #parent as p ON (LTRIM(RTRIM(t.lastname)) = LTRIM(RTRIM(p.lastname))
AND LTRIM(RTRIM(t.firstname)) = LTRIM(RTRIM(p.firstname)) )
When Matched Then
Update
set PID = p.PID;
update #child
Set lastname=LTRIM(RTRIM(lastname)), firstname= LTRIM(RTRIM(firstname));
update #parent
Set lastname=LTRIM(RTRIM(lastname)), firstname = LTRIM(RTRIM(firstname));
select * from #child
select * from #parent
drop table #parent,#child -
I have three tables, photos, comments and prices. Their
structures (abbreviated) are as follows:
photos
photoID
photoTitle
prices
priceID
priceValue
photoID_fk
comments
commentID
commentText
photoID_fk
What I need to do is be able to display a list of photos with
their correlating prices and comments, like so:
Photo 1
Price 1
Price 2
Comment 1
comment 2
Photo 2
Price 1
Price 2
Photo 3
Price 1
Price 2
Comment 1
Notice that while each photo will always have the same number
of "price" values, some might have comments and some might not.
I will list the code that I have thus far, but let me briefly
explain what is happening. With the setup I currently have, the
photos display in the proper order with their proper price values
and comments (if any). Unfortunately, on the ones WITH comments,
the list of prices duplicates to match the number of comments
returned. So, if Photo 1 has two comments, it will return "Price 1
Price 2 Price 1 Price 2" for the output of the price section.
I have been pulling my hair out over this, and any help that
anyone could provide would be greatly appreciated and will
potentially save my life.Dan--
Thanks, as always, for your response. Your solution solved
the problem!
As to my database needs, the comments are related only to the
photos.
Basically, I have a a table that holds all information about
photos in a gallery. I have another table which holds all the
comments that users make about the photos. Finally, each and every
photo has 8 sizes (all the same) for sale. So, I don't think the
MTM relationship is there.
Initially, I was simply going to put Size1, Size2, etc. in
the photos table. However, my client wants to be able to add and/or
remove sizes in the future. Therefore, I thought it would be easier
if every photo was given "x" number of entries in the prices table,
where "x" is the number of total price categories (currently 8).
I don't want to monopolize more of your time, but if you have
a second, I would be interested in hearing a more developed
explanation of the restructuring that you proposed at the end of
your last response. If you do not have time, I understand of
course.
Thanks a million for your help on this! -
Hi,
I am looking for the following result:
PROVIDER_ID SPECIALTY BUCKET CODE RATING FEE
1 FP EM 100 9 20
1 FP SP 300 15 0
1 INFUS EM 100 3 20
1 INFUS EM 200 6 15The base tables are provided below in the with clause. What I am trying to do is, where "code" matches show the fee from t1 else show 0.
I tried a few variotions but just can't seem to get it right.
with t1 as
select 1 as provider_id, 100 as code, 20 as fee, 10 as default_multiplier from dual union all
select 1 as provider_id, 200 as code, 15 as fee, 30 as default_multiplier from dual
, t2 as
select 100 as code, 'INFUS' AS specialty, 'EM' AS bucket, 3 as rating from dual union all
select 200 as code, 'INFUS' AS specialty, 'EM' AS bucket, 6 as rating from dual union all
select 100 as code, 'FP' AS specialty, 'EM' AS bucket, 9 as rating from dual union all
select 300 as code, 'FP' AS specialty, 'SP' AS bucket, 15 as rating from dual
SELECT t1.provider_id
, t2.specialty
, t2.bucket
, t2.code
, t2.rating
, t1.fee
FROM t1, t2
ORDER BY 1, 2, 3Any help will be appreciated.
Thanks.Could I possibly add one more twist to this.
The current result:
PROVIDER_ID SPECI BU CODE RATING FEE
1 FP EM 100 9 20
1 FP SP 300 15 0
1 INFUS EM 100 3 20
1 INFUS EM 200 6 75
2 FP EM 100 9 40
2 FP SP 300 15 0
2 INFUS EM 100 3 40
2 INFUS EM 200 6 0
3 FP EM 100 9 0
3 FP SP 300 15 0
3 INFUS EM 100 3 0
3 INFUS EM 200 6 60The current code:
with t1 as
select 1 as provider_id, 100 as code, 20 as fee, 10 as default_multiplier from dual union all
select 1 as provider_id, 200 as code, 75 as fee, 10 as default_multiplier from dual union all
select 1 as provider_id, 500 as code, 75 as fee, 10 as default_multiplier from dual union all
select 2 as provider_id, 100 as code, 40 as fee, 20 as default_multiplier from dual union all
select 3 as provider_id, 200 as code, 60 as fee, 30 as default_multiplier from dual
, t2 as
select 100 as code, 'INFUS' AS specialty, 'EM' AS bucket, 3 as rating from dual union all
select 200 as code, 'INFUS' AS specialty, 'EM' AS bucket, 6 as rating from dual union all
select 100 as code, 'FP' AS specialty, 'EM' AS bucket, 9 as rating from dual union all
select 300 as code, 'FP' AS specialty, 'SP' AS bucket, 15 as rating from dual
, t3 as
SELECT t1.provider_id
, t2.specialty
, t2.bucket
, t2.code
, t2.rating
, CASE t1.code
WHEN t2.code
THEN t1.fee
ELSE 0
END AS fee
, RANK () OVER (PARTITION BY t1.provider_id, t2.specialty, t2.bucket, t2.code ORDER BY CASE t1.code
WHEN t2.code
THEN t1.fee
ELSE 0
END DESC) AS the_rank
FROM t1
, t2
SELECT DISTINCT provider_id
, specialty
, bucket
, code
, rating
, fee
FROM t3
WHERE the_rank = 1
ORDER BY 1
, 2
, 3
, 4I added the code 500 to t1. Howevere, I don't want this code to show up in the result becuase it is does not exist in t2.
I also added code 200 to t1, to see if that shows properly.
I had to do the rank, becuase I need the proper count of rows.
In reality the row counts are:
t1: 20 Million
t2: 10 Thousand.
So, I would like to avoid doing DISTINCT and ANALYTIC functions on this large set, so any better way of achiving the same result, with a better statement.
Thanks. -
Self-join query to Analytical function query
Hi All,
I have converted a self-join query to Analytical function query due to the performance reasons.
Query which is using Analytical function is giving the correct count as I compared it with query using Self-Join. Can you please tell what is wrong in the query.
==========================
Query using Self-Join
select count(1)
From (select t1.*, max(t1.dw_creation_dt) over (partition by t1.empl_id) pers_max_date
from ohr_pers_curr t1 ) pers
, (select t2.*, max(t2.dw_creation_dt) over (partition by t2.empl_id, t2.empl_rcd) job_max_date
from OHR_JOB_CURR t2) job
where pers.empl_id = job.empl_id
and pers.dw_creation_dt=pers.pers_max_date
and job.dw_creation_dt=job.job_max_date
and job.dummy_row_flag = 'N'
and pers.dw_creation_rsn_cd in ('N', 'U')
and job.dw_creation_rsn_cd in ('N', 'U')
================================================
Query Using Analytical function
select count(1)
From (select t1.*, max(t1.dw_creation_dt) over (partition by t1.empl_id) pers_max_date
from ohr_pers_curr t1 ) pers
, (select t2.*, max(t2.dw_creation_dt) over (partition by t2.empl_id, t2.empl_rcd) job_max_date
from OHR_JOB_CURR t2) job
where pers.empl_id = job.empl_id
and pers.dw_creation_dt=pers.pers_max_date
and job.dw_creation_dt=job.job_max_date
and job.dummy_row_flag = 'N'
and pers.dw_creation_rsn_cd in ('N', 'U')
and job.dw_creation_rsn_cd in ('N', 'U')
==================================Hi David,
The base is same but the problem is different.
As far as implementation concern these queries looks same, but when I see there counts, they do not match. I do not have any reason why this happening.
Regards
Gaurav -
Need some help with the Select query.
Need some help with the Select query.
I had created a Z table with the following fields :
ZADS :
MANDT
VKORG
ABGRU.
I had written a select query as below :
select single vkorg abgru from ZADS into it_rej.
IT_REJ is a Work area:
DATA : BEGIN OF IT_REJ,
VKORG TYPE VBAK-VKORG,
ABGRU TYPE VBAP-ABGRU,
END OF IT_REJ.
This is causing performance issue. They are asking me to include the where condition for this select query.
What should be my select query here?
Please suggest....
Any suggestion will be apprecaiated!
Regards,
DeveloperHello Everybody!
Thank you for all your response!
I had changes this work area into Internal table and changed the select query. PLease let me know if this causes any performance issues?
I had created a Z table with the following fields :
ZADS :
MANDT
VKORG
ABGRU.
I had written a select query as below :
I had removed the select single and insted of using the Structure it_rej, I had changed it into Internal table
select vkorg abgru from ZADS into it_rej.
Earlier :
IT_REJ is a Work area:
DATA : BEGIN OF IT_REJ,
VKORG TYPE VBAK-VKORG,
ABGRU TYPE VBAP-ABGRU,
END OF IT_REJ.
Now :
DATA : BEGIN OF IT_REJ occurs 0,
VKORG TYPE VBAK-VKORG,
ABGRU TYPE VBAP-ABGRU,
END OF IT_REJ.
I guess this will fix the issue correct?
PLease suggest!
Regards,
Developer. -
Help with an SQL Query on the Logger
We are running UCCE 8.5(3) and need help with an SQL query. When I run the below I would also like to see skill group information(name preferably)? Any help would be greatly appreciated!
select * from dbo.t_Termination_Call_Detail where DateTime between '10-11-2012 00:00:00:00' and
'10-11-2012 23:59:59:59'David, thanks for replying. Unfortunitly I don't know enough about SQL to put that into a query and have it return data. Would you be able to give an example on what the query would look like?
-
Hi,
I have another query running slow when executed from cognos. It is also not returning any output continues to execute,
with "Union15" as (
select distinct CASE WHEN(substr(to_char(FLOOR("EES_ENERGY_MASTER"."DISC_MON"/100)), 1, 4) IS NULL) OR (case substr(to_char(FLOOR("EES_ENERGY_MASTER"."DISC_MON"/100)), 5, 1) when '1' then 'Q1' when '2' then 'Q2' when '3' then 'Q3' when '4' then 'Q4' end IS NULL) THEN NULL ELSE (substr(to_char(FLOOR("EES_ENERGY_MASTER"."DISC_MON"/100)), 1, 4)||case substr(to_char(FLOOR("EES_ENERGY_MASTER"."DISC_MON"/100)), 5, 1) when '1' then 'Q1' when '2' then 'Q2' when '3' then 'Q3' when '4' then 'Q4' end ) END "QUARTER", "EES_ENERGY_MASTER"."PAT_KEY" "Cases_Using_Energy", 0 "Total_Cases"
from "MDM_DBA"."EES_ENERGY_MASTER" "EES_ENERGY_MASTER", "MDM_DBA"."EES_CONS_PROV" "EES_CONS_PROV"
where "EES_ENERGY_MASTER"."DISC_MON">=2006101 and "EES_ENERGY_MASTER"."PDCT_CAT"='Energy' and substr("EES_ENERGY_MASTER"."ICD_CODE", 1, 2)='68-gyn' and "EES_ENERGY_MASTER"."MANUFACTURER"='EES' and "EES_CONS_PROV"."CONS_06_09_YN" in ('N', 'Y') and "EES_ENERGY_MASTER"."PROV_ID"="EES_CONS_PROV"."PROV_ID" union
select CASE WHEN(substr(to_char(FLOOR("MVW_EES_ICD_STATS"."DISC_QTR")), 1, 4) IS NULL) OR (case substr(to_char(FLOOR("MVW_EES_ICD_STATS"."DISC_QTR")), 5, 1) when '1' then 'Q1' when '2' then 'Q2' when '3' then 'Q3' when '4' then 'Q4' end IS NULL) THEN NULL ELSE (substr(to_char(FLOOR("MVW_EES_ICD_STATS"."DISC_QTR")), 1, 4)||case substr(to_char(FLOOR("MVW_EES_ICD_STATS"."DISC_QTR")), 5, 1) when '1' then 'Q1' when '2' then 'Q2' when '3' then 'Q3' when '4' then 'Q4' end ) END "QUARTER", 0 "Cases_Using_Energy", count("MVW_EES_ICD_STATS"."CASES") "Total_Cases"
from "MDM_DBA"."MVW_EES_ICD_STATS" "MVW_EES_ICD_STATS", "MDM_DBA"."EES_CONS_PROV" "EES_CONS_PROV", "MDM_DBA"."EES_HOSP_CHG_PROV" "EES_HOSP_CHG_PROV"
where "MVW_EES_ICD_STATS"."DISC_QTR">=20061 and "MVW_EES_ICD_STATS"."ICD_GROUP"='68-gyn' and "EES_CONS_PROV"."CONS_06_09_YN" in ('N', 'Y') and "EES_HOSP_CHG_PROV"."PDCT_CAT"='Energy' and "EES_HOSP_CHG_PROV"."MANUFACTURER"='EES' and "MVW_EES_ICD_STATS"."PROV_ID"="EES_CONS_PROV"."PROV_ID" and "MVW_EES_ICD_STATS"."PROV_ID"="EES_HOSP_CHG_PROV"."PROV_ID"
group by CASE WHEN(substr(to_char(FLOOR("MVW_EES_ICD_STATS"."DISC_QTR")), 1, 4) IS NULL) OR (case substr(to_char(FLOOR("MVW_EES_ICD_STATS"."DISC_QTR")), 5, 1) when '1' then 'Q1' when '2' then 'Q2' when '3' then 'Q3' when '4' then 'Q4' end IS NULL) THEN NULL ELSE (substr(to_char(FLOOR("MVW_EES_ICD_STATS"."DISC_QTR")), 1, 4)||case substr(to_char(FLOOR("MVW_EES_ICD_STATS"."DISC_QTR")), 5, 1) when '1' then 'Q1' when '2' then 'Q2' when '3' then 'Q3' when '4' then 'Q4' end ) END)
select "T1"."C0" "levelkey", "T1"."C1" "Cases_Using_Energy", "T0"."C0" "Cases_Using_Energy1", "T1"."C2" "Total_Cases"
from (
select count(distinct "Union15"."Cases_Using_Energy") "C0"
from "Union15") "T0", (
select "Union15"."QUARTER" "C0", count(distinct "Union15"."Cases_Using_Energy") "C1", sum("Union15"."Total_Cases") "C2"
from "Union15"
group by "Union15"."QUARTER") "T1"The explain plan is as follows,
PLAN_TABLE_OUTPUT
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost |
| 0 | SELECT STATEMENT | | 1 | 50 | | 22 |
| 2 | TEMP TABLE TRANSFORMATION | | | | | |
| 1 | RECURSIVE EXECUTION | SYS_LE_2_0 | | | | |
| 0 | INSERT STATEMENT | | 3053 | 128K| | 1372 |
| 1 | LOAD AS SELECT | | | | | |
| 2 | SORT UNIQUE | | 3053 | 128K| 376K| 1372 |
| 3 | UNION-ALL | | | | | |
|* 4 | HASH JOIN | | 3052 | 128K| | 185 |
|* 5 | TABLE ACCESS FULL | EES_CONS_PROV | 622 | 3732 | | 2 |
|* 6 | TABLE ACCESS BY INDEX ROWID | EES_ENERGY_MASTER | 3055 | 110K| | 182 |
|* 7 | INDEX RANGE SCAN | IDX_ENERGY_PDCT_CAT | 1978 | | | 2478 |
| 8 | SORT GROUP BY | | 1 | 40 | | 1160 |
|* 9 | TABLE ACCESS BY INDEX ROWID | EES_HOSP_CHG_PROV | 4 | 72 | | 1 |
| 10 | NESTED LOOPS | | 1 | 40 | | 1157 |
| 11 | NESTED LOOPS | | 1 | 22 | | 1156 |
|* 12 | TABLE ACCESS BY INDEX ROWID| MVW_EES_ICD_STATS | 1 | 16 | | 1155 |
|* 13 | INDEX RANGE SCAN | MVWICDSTATS_DISCQTR_IDX | 13M| | | 26068 |
|* 14 | TABLE ACCESS BY INDEX ROWID| EES_CONS_PROV | 1 | 6 | | 1 |
|* 15 | INDEX UNIQUE SCAN | EES_CONS_PROV_PK | 1 | | | |
|* 16 | INDEX RANGE SCAN | PROV_ID_IDX_2 | 65 | | | 1 |
| 3 | MERGE JOIN CARTESIAN | | 1 | 50 | | 22 |
| 4 | VIEW | | 1 | 13 | | 3 |
| 5 | SORT GROUP BY | | 1 | 13 | | |
| 6 | VIEW | | 3053 | 39689 | | 3 |
| 7 | TABLE ACCESS FULL | SYS_TEMP_0FD9D68B3_C112F95D | 3053 | 110K| | 3 |
| 8 | VIEW | | 1 | 37 | | 19 |
| 9 | SORT GROUP BY | | 1 | 37 | | 19 |
| 10 | VIEW | | 3053 | 110K| | 3 |
| 11 | TABLE ACCESS FULL | SYS_TEMP_0FD9D68B3_C112F95D | 3053 | 110K| | 3 |
Predicate Information (identified by operation id):
4 - access("EES_ENERGY_MASTER"."PROV_ID"="EES_CONS_PROV"."PROV_ID")
5 - filter("EES_CONS_PROV"."CONS_06_09_YN"='N' OR "EES_CONS_PROV"."CONS_06_09_YN"='Y')
6 - filter("EES_ENERGY_MASTER"."DISC_MON">=2006101 AND SUBSTR("EES_ENERGY_MASTER"."ICD_CODE",1,2)='68-gyn'
AND "EES_ENERGY_MASTER"."MANUFACTURER"='EES')
7 - access("EES_ENERGY_MASTER"."PDCT_CAT"='Energy')
9 - filter("EES_HOSP_CHG_PROV"."PDCT_CAT"='Energy' AND "EES_HOSP_CHG_PROV"."MANUFACTURER"='EES')
12 - filter("MVW_EES_ICD_STATS"."ICD_GROUP"='68-gyn')
13 - access("MVW_EES_ICD_STATS"."DISC_QTR">=20061 AND "MVW_EES_ICD_STATS"."DISC_QTR" IS NOT NULL)
14 - filter("EES_CONS_PROV"."CONS_06_09_YN"='N' OR "EES_CONS_PROV"."CONS_06_09_YN"='Y')
15 - access("MVW_EES_ICD_STATS"."PROV_ID"="EES_CONS_PROV"."PROV_ID")
16 - access("MVW_EES_ICD_STATS"."PROV_ID"="EES_HOSP_CHG_PROV"."PROV_ID")
Please help with some solution.OK: the third parameter of the SUBSTR function indicates the (maximum) length of the returnd string.
Therefore SUBSTR("EES_ENERGY_MASTER"."ICD_CODE",1,2) could possibly be '68' , but never '68-gyn'.
'68-gyn' is just 4 characters too long.
Urs -
Hi,
I want to make an application using component tree with one table. This table has menu_id and menu_parent.
I got a little problem when I use self joining table, it shown all parents and children.
I want only the root folder (parent) to be shown first and then by opening the menu_parent, i should be able to see the menu_id folders.
Can you please help me.
ThanksHi,
you need to have a viewcriteria in your vo for selecting the parents one, then while selecting vo in datacontrols in AM you need to select your viewcriteria in your vo by editing it.
Also you need to have a ViewLink between same viewobjects i.e menu_id->parent->id.
See if this helps.
Regards,
Santosh, -
Help with a update query from a subquery
Hello All,
I wanted to see if someone can help me with an update query.
I need to grab a latitude & longitude from a the same user that is in two accounts. therefore i am trying to update lat/long in a users table for one account based off of the same user in another account. I am matching the users up by phone number and last name. I tried a subquery but am having difficulty.
I was thinking of something like the following:
update users
set lat = getlat, long = getlong
inner join (select lat as getlat, long as get long from users where account_id = '1')
on phone = phone and last name = lastname
where account_id = '2' and lat IS NULL and long IS NULL
Am I going in the right direction???
Thanks in advance for any assistance!!!!What difficulty are you having? Have you tried what you posted and get an error?
Although someone may be able to give you sql advice here, I would try posting this over at Stack Overflow as its not really related to Coldfusion. -
Need help with LikeFilter for querying the keyset instead of value
Hi,
I'm looking for help with the LikeFilter.
I need to query the cache to get all entries with key starting with a particular string.
I could see samples using LikeFilter for querying the values in the cache but not the keyset.
Can someone help?
E.g:
Cache Entries:
abc123 - value1
abc234 - value2
bcd123 - value3
I want to get all entries with key starting with 'abc'.
thanks,
rama.NJ, thanks for the quick reply.
I tried something similar (as below) but this code gives me 'java.lang.NoClassDefFoundError: com/tangosol/util/ValueExtractor'.
KeyExtractor extractor = new KeyExtractor("getKey");
Filter filter = new LikeFilter(extractor, id+":%",'-',false);
-rama.
Edited by: 911950 on Feb 2, 2012 1:18 PM -
Hi,
I've got a server audit log in PowerPivot (114,000 rows) which I provide some basic reporting from (PowerPivot is not my specialist subject so go easy). What I now need to perform a Distinct filter, but can't get the logic right. Basically the log
as two bits of information, 1) is the source of the job and 2) if it was a success or failure. What I need to do is to find all of the Source items that have never completed sucessfully. Any ideas on what formula is best to use, or
do I need to split in to multiple sheets and create a table relationship?
Source,Status
======,======
Source1,Fail
Source1,Fail
Source1,Success
Source2,Fail
Source3,Fail
Source3,Success
So in the above example, I would only expect the filter to show me Source2
Thanks
AlexHi Alex,
using Power Query instead, it would work like this:
Once you've pushed your table to PQ, add a column "helper" with value=1.
Then pivot on "Status", taking "helper"-column into "values column"
(hope translation is understandable, as I'm using localized Version & translation via "Quick info" isn't working in the PQ menu)
Then filter on column "Success" = blank.
Imke
Maybe you are looking for
-
A follow-up to my first "Did you know?". Did you know.... That when you are getting a call you can turn the phone screen down on a flat surface to silence the ringer?! That by default EVERY new number you dial gets saved to Contacts?! To disable this
-
Hi, I am trying to install Oracle 11g RAC on RHEL 4.0 on Vmware and at the end of CRS installation when installer asks to run the two scripts (orainstRoot.sh and root.sh) on one node (on the node where runInstaller is started) throws following error
-
I have recently upgraded to windows 7 ultimate on tow of my laptops. The one is an HP 4510s and I have no problem synchronising with my Nokia N97 using PC suite 7.1.40.1. However when I try and synchronise with my other Laptop an Asus F5RL with the
-
Can't install audio on Presario C300
I have a Presario C304NR that came with XP Home. I just installed XP Pro and now there is no audio device. I installed Microsofts UAA audio driver and then when I install the audio driver from HP it get the error- driver installation failed no audio
-
hI all, I use tomcat before and I use port 80 now I wan to add apach, since the defaul por tis 80 too, so I uninstall tomcat, but when I open my appach I still have can't listen to port 80, is be used ,why?? Thank you