Group by SQL Help
I have a table with telnumbers and versionnumber along with some other columns.
( the table doesnt have any primary keys )
I have to write a query that gets all the rows with distinct telnumbers and only selecting the highest versionnumbers.
something like
select * from tableA group by telnumbers, versionnumber having distinct(telnumbers) max(versionnumber)=versionnumber
thanks
Untested:
select telnumbers
, max(versionnumber)
from tableA
group by telnumbersRegards,
Rob.
Similar Messages
-
How to transfer the tables from one file group to another file group in SQL 2008.?
Hello all,
I have few issues regarding the transfer of the tables from one file group to another file group in SQL 2008 and also How can we backup
and restore the particular database based on file group level.
Let’s say I have a tables stored within the different FG. such as
Tables
File group
Dimension tables
Primary
Fact tables
FG1
FG2…
zzz_tables
DEFAULT_FG
dim.table1 DEFAULT_FG
dim.table2 DEFAULT_FG
Here all I want to transfer the dim.table1 ,dim.table2 from DEFAULT_FG to the Primary File
group .So is there simple methods for transfer the dim.table1,2 from one FG to another .I have tried somewhat but I couldn’t get the exact way .So if someone have better idea please share your knowledge that would be really appreciated.
Secondly after moving those dim.table1 ,dim.table2 from DEFAULT_FG to Primary ,All I want to backup and restore the database only containing the Primary and FG1,FG2… not
a DEFAULT_FG.Is it possible or not.?
Hope to hear from the one who knows better approach for this kind of task .Your simple help will be much appreciated.
Regards,
Anil MaharjanWell after all my full day research on this topic had paid off, I finally got the solution and am so happy to research on these things. It makes
us feel really happy after all our research and hard work doesn't goes as waste.
Finally I got what I am looking for and want to make sure that I am able to transfer the tables from DEFAULT_FG to another FG without tables
having clustered index on that tables .
With the help of the link below I finally got my solution where Roberto’s coded store procedure simply works for this.
Really thanks to him for his great post and thanks to all for your response and your valuable time.
http://gallery.technet.microsoft.com/scriptcenter/c1da9334-2885-468c-a374-775da60f256f
Regards,
Anil Maharjan -
Hi again
I need some PIVOT sql help
In this query:
SELECT
SUM([RATES]) as RATES
,SUM([CONVERSION])as CONVERSION
FROM REPORTING
outputs
RATES CONVERSION
23 234
How would change this query to display a table like:
Name Amount
RATES 23
CONVERSION 234
Keep up the good work !nikos101 wrote:
> How would change this query to display a table like:
Do you *HAVE* to change the query... you could just display
it in the
desired format if that it the ultimate and only goal.
<table>
<tr>
<td>name</td>
<td>amount</td>
</tr>
<cfoutput query="sumQry">
<tr><td>Rates</td><td>#rates#</td></tr>
<tr><td>Conversion</td><td>#conversion#</td></tr>
</cfoutput>
</table> -
No matter what I try I can never get the Acrobat Reader to be added to the group of "Choose Helper Application" programs available in that window when downloading a pdf. I always have to browse to the Acrobat reader and select it that way.
I have enabled Acrobat in the add-ons manager, but that has not solved the problem.
In the options > applications menu I've selected use Acrobat Reader for pdf files but that doesn't work and furthermore doesn't seem to stick. That is, sometimes when I check that menu later the selection has reverted to "always ask".
I'm using Firefox 32 on Windows 7. I have used Firefox on XP for years and never had this problem.Here are some screen shots to backup my claims.
-
How do I remove a node from Always on Availability Group in SQL 2012
Hello I was wondering if anyone could tell me to remove a node from an AOG group in SQL 2012. We currently have a two node Always on availability group and I need to replace one of the servers. My plan is to bring the
new server on to the group then remove the old server and I am having issues finding documentation on this. Could someone explain how to do this or if it is even possible.
ThanksAfter the new server is added to the cluster and the AG, remove the old one by first
ALTER AVAILABILITY GROUP [YourAG]
REMOVE REPLICA ON N'OldServer';
Remove a Secondary Replica from an Availability Group
Then evict the old server from the cluster with the cluster administrator or
Remove-ClusterNode OldServer
Remember to verify the quorum configuration after adding the new server and removing the old server.
David
David http://blogs.msdn.com/b/dbrowne/ -
Please help. I am trying to download the latest version of iTunes so I can synch my new iPhone. I keep getting "The older version of Apple Software Update cannot be removed. Contact your technical support group." Please help as I have absolutely no idea. Thanks.
Download the Windows Installer CleanUp utility from the following page (use one of the links under the thingy on the Major Geeks page):
http://majorgeeks.com/download.php?det=4459
To install the utility, doubleclick the msicuu2.exe file you downloaded.
Now run the utility ("Start > All Programs > Windows Install Clean Up"). In the list of programs that appears in CleanUp, select any Apple Software Update entries and click "Remove", as per the following screenshot:
Quit out of CleanUp, restart the PC and try another iTunes install. Does it go through properly this time? -
Grouping Rules in PL/SQL Help needed
Hi I have a requirement where I wan to group based on the below scenario
I have a Table_A
Table_A strcuture:
create table table_a
code number,
name varchar2 (100),
city varchar2 (100),
dept varchar2 (100));;
insert into table_a
values
1,'ABC','EA','A');
insert into table_a
values
1,'ABC','EA1','A');
insert into table_a
values
2,'BCD','EA2','A');
insert into table_a
values
2,'ABC','EA3','A'');
insert into table_a
values
3,'KBC','EA,'A');
insert into table_a
values
3,'ABC','EA,'A');
wan to group the above table data based on name,city,dept
I wan the data as
1 ABC EA1 A
BCD EA2 A
2 BCD EA2 A
ABC EA3 A
3 KBC EA A
BCD EA A
Kindly any help will be needful for meThis is more of a presentation layer problem I would not handle it in SQL. For example if the presentation layer is SQL Plus you can use BREAK command, like this.
SQL> select * from table_a;
CODE NAME CITY DEPT
1 ABC EA A
1 ABC EA1 A
2 BCD EA2 A
2 ABC EA3 A
3 KBC EA A
3 ABC EA A
6 rows selected.
SQL> break on code
SQL>
SQL> select * from table_a order by code;
CODE NAME CITY DEPT
1 ABC EA A
ABC EA1 A
2 BCD EA2 A
ABC EA3 A
3 KBC EA A
ABC EA A
6 rows selected.
But if you still wish to do it in SQL the right way is to use ROW_NUMBER like this.
SQL> clear breaks
breaks cleared
SQL>
SQL> select * from table_a;
CODE NAME CITY DEPT
1 ABC EA A
1 ABC EA1 A
2 BCD EA2 A
2 ABC EA3 A
3 KBC EA A
3 ABC EA A
6 rows selected.
SQL> select decode(rno, 1, code) code
2 , name
3 , city
4 , dept
5 from (
6 select row_number() over(partition by code order by name) rno
7 , t.*
8 from table_a t
9 )
10 /
CODE NAME CITY DEPT
1 ABC EA A
ABC EA1 A
2 ABC EA3 A
BCD EA2 A
3 ABC EA A
KBC EA A
6 rows selected. -
SQL help, how to group by column A and then get top frequency of column B?
Assuming the following table, operation represents each kind of transaction operation
table operation employee other column c
'<' id1
'<' id1
'<' id2
'*' id3
'/' id1
question, for each operation, which employee do the most? which employee do the 2nd most?
I thought I need to group by operation first, and then get the frequency of employee, and get the top 1 or top 2 frequency highest.
But I am stuct, and do not know how to write the sql.998408 wrote:
Assuming the following table, operation represents each kind of transaction operation
table operation employee other column c
'<' id1
'<' id1
'<' id2
'*' id3
'/' id1
question, for each operation, which employee do the most? which employee do the 2nd most?
I thought I need to group by operation first, and then get the frequency of employee, and get the top 1 or top 2 frequency highest.
But I am stuct, and do not know how to write the sql.Welcome to OTN. Ops! posted in wrong forum. Just post in {forum:id=75}. Before posting there close this thread marking as answered.
If someone's response is helpful or correct, please mark it accordingly.* -
SQL help: How to collect summary number with group by?
Hello,
I have the following table:
create table tb_class_info (classNbr number(5), classType number(2), classTeacherNbr number(4));
insert into tb_class_info values (101, 1, 12);
insert into tb_class_info values (001, 2, 12);
insert into tb_class_info_values (001, 2, 13);
insert into tb_class_info_values(002, 2, 12);
insert into tb_class_info_values(002, 2, 12);
I would like to get the statistics on classNbr cnt, classTeacherNbr cnt for classType=2. I expect to have the following results:
classNbr classType2Cnt classTeacherCnt
101 0 0
001 2 2
002 2 1
Here is the SQL I am using:
SELECT classNbr,
SUM (CASE when classType=2 THEN 1 ELSE 0 END) as classTypeCnt,
SUM (CASE when classType=2 THEN unique classTeacherNbr ELSE 0 END) as classTeacherCnt
FROM tb_class_info
GROUP BY classNbr;
However I have the 'ORA-00905: missing keyword' error. Any suggestion on this issue?
Thanks for your help!Try:
SELECT classNbr,
SUM (CASE when classType=2 THEN 1 ELSE 0 END) as classTypeCnt,
count (distinct(CASE when classType=2 THEN classTeacherNbr ELSE null END)) as classTeacherCnt
FROM tb_class_info
GROUP BY classNbr; -
I need some help about Group by sql statement.
Thank you for reading my post
I am learning more sql and i have a question which is about HR schem.
how i can show Departments.department_name in the following sql query?
I want query to show department names along with department IDs.
SELECT department_id dept_id, job_id, SUM(salary)
FROM employees
GROUP BY department_id, job_id ;thankshi
like this
SQL> ed
Wrote file afiedt.buf
1 select d.department_id dept_id, d.department_name, e.job_id, sum(e.salary)
2 from employees e, departments d
3 where e.department_id = d.department_id
4* group by d.department_id, d.department_name, e.job_id
SQL> /
DEPT_ID DEPARTMENT_NAME JOB_ID SUM(E.SALARY)
10 Administration AD_ASST 4400
20 Marketing MK_MAN 13000
20 Marketing MK_REP 6000
30 Purchasing PU_MAN 11000
30 Purchasing PU_CLERK 13900
40 Human Resources HR_REP 6500
50 Shipping ST_MAN 36400
50 Shipping SH_CLERK 64300
50 Shipping ST_CLERK 55700
60 IT IT_PROG 28800
70 Public Relations PR_REP 10000
DEPT_ID DEPARTMENT_NAME JOB_ID SUM(E.SALARY)
80 Sales SA_MAN 61000
80 Sales SA_REP 243500
90 Executive AD_VP 34000
90 Executive AD_PRES 24000
100 Finance FI_MGR 12000
100 Finance FI_ACCOUNT 39600
110 Accounting AC_MGR 12000
110 Accounting AC_ACCOUNT 8300
19 rows selected.
SQL>hope this helps
Taj -
Introduction
In SQL Server Reporting Service (SSRS), you may need an average value on column chart.
For the above chart, add an average score line to the chart, you can get which student’s score is larger than average score, and which student’s score is less than average score clearly. This document demonstrates how to add an average line to series groups
on SSRS column chart.
Solution
To achieve this requirement, you can add another values to the chart, change the chart type to line chart. Set the value to average value of the series group and set the line to show only once by using expression. Please refer to the link below to see the
detail steps.
Click the chart to display the Chart Data pane.
Add Score field to the Values area.
Right-click the new inserted Score1 and select Change Chart Type. And then change chart type to line chart in the Select Chart Type window.
Change the Category Group name to Subject. Here are the screenshot for you reference.
Right-click the new inserted Score1 and select Series Properties.
Click the expression button on the right of Value field textbox, type the expression below:
=Avg(Fields!Score.Value,"Subject"))
Click Visibility in the left pane, select “Show or hide based on an expression”, and type in the expression below:
=IIF(Fields!Name.Value="Rancy",FALSE,TRUE)
Name in the expression is one of the Students. Then only one line chart is be displayed by using this expression.
Click Legend in the left pane, type Average_Score to the Custom legend text box.
The report looks like below:
Applies to
Microsoft SQL Server 2005
Microsoft SQL Server 2008
Microsoft SQL Server 2008 R2
Microsoft SQL Server 2012
Please click to vote if the post helps you. This can be beneficial to other community members reading the thread.Thanks,
Is this a supported scenario, or does it use unsupported features?
For example, can we call exec [ReportServer].dbo.AddEvent @EventType='TimedSubscription', @EventData='b64ce7ec-d598-45cd-bbc2-ea202e0c129d'
in a supported way?
Thanks! Josh -
What is the best way of returning group-by sql results in Toplink?
I have many-to-many relationship between Employee and Project; so,
a Employee can have many Projects, and a Project can be owned by many Employees.
I have three tables in the database:
Employee(id int, name varchar(32)),
Project(id int, name varchar(32)), and
Employee_Project(employee_id int, project_id int), which is the join-table between Employee and Project.
Now, I want to find out for each employee, how many projects does the employee has.
The sql query that achieves what I want would look like this:
select e.id, count(*) as numProjects
from employee e, employee_project ep
where e.id = ep.employee_id
group by e.id
Just for information, currently I am using a named ReadAllQuery and I write my own sql in
the Workbench rather than using the ExpressionBuilder.
Now, my two questions are :
1. Since there is a "group by e.id" on the query, only e.id can appear in the select clause.
This prevent me from returning the full Employee pojo using ReadAllQuery.
I can change the query to a nested query like this
select e.eid, e.name, emp.cnt as numProjects
from employee e,
(select e_inner.id, count(*) as cnt
from employee e_inner, employee_project ep_inner
where e_inner.id = ep_inner.employee_id
group by e_inner.id) emp
where e.id = emp.id
but, I don't like the complication of having extra join because of the nested query. Is there a
better way of doing something like this?
2. The second question is what is the best way of returning the count(*) or the numProjects.
What I did right now is that I have a ReadAllQuery that returns a List<Employee>; then for
each returned Employee pojo, I call a method getNumProjects() to get the count(*) information.
I had an extra column "numProjects" in the Employee table and in the Employee descriptor, and
I set this attribute to be "ReadOnly" on the Workbench; (the value for this dummy "numProjects"
column in the database is always 0). So far this works ok. However, since the numProjects is
transient, I need to set the query to refreshIdentityMapResult() or otherwise the Employee object
in the cache could contain stale numProjects information. What I worry is that refreshIdentityMapResult()
will cause the query to always hit the database and beat the purpose of having a cache. Also, if
there are multiple concurrent queries to the database, I worry that there will be a race condition
of updating this transient "numProjects" attribute. What are the better way of returning this kind
of transient information such as count(*)? Can I have the query to return something like a tuple
containing the Employee pojo and an int for the count(*), rather than just a Employee pojo with the
transient int inside the pojo? Please advise.
I greatly appreciate any help.
Thanks,
FransNo I don't want to modify the set of attributes after TopLink returns it to me. But I don't
quite understand why this matters?
I understand that I can use ReportQuery to return all the Employee's attributes plus the int count(*)
and then I can iterate through the list of ReportQueryResult to construct the Employee pojo myself.
I was hesitant of doing this because I think there will be a performance cost of not being able to
use lazy fetching. For example, in the case of large result sets and the client only needs a few of them,
if we use the above aproach, we need to iterate through all of them and wastefully create all the Employee
pojos. On the other hand, if we let Toplink directly return a list of Employee pojo, then we can tell
Toplink to use ScrollableCursor and to fetch only the first several rows. Please advise.
Thanks. -
I do not know if this is the right place for thius type of post. If it is not please advise where the right place is.
I need help generating a report, hopefully with SQL in 8.1.7
SQL Statement which produced the data below the query :
SELECT CHANGE.change_number, CHANGE.route_date as DATE_TO_CCB, nodetable.description AS Approver_required, (TRIM(BOTH ',' FROM CHANGE.PRODUCT_LINES)) AS PRODUCT_LINES /*, PROPERTYTABLE.VALUE as PRODUCT_LINES */
FROM CHANGE, signoff, workflow_process, nodetable /*, PROPERTYTABLE */
WHERE ( (CHANGE.ID = signoff.change_id)
AND (CHANGE.process_id = signoff.process_id)
AND ((nodetable.id = signoff.user_assigned) or (nodetable.id=signoff.user_signed))
AND (CHANGE.process_id = workflow_process.ID)
AND (CHANGE.ID = workflow_process.change_id)
AND (CHANGE.workflow_id = workflow_process.workflow_id)
AND (SIGNOFF.SIGNOFF_STATUS=0 )/* in (0, 2, 3)) */ /* 0=request needs attention, 2=request approved, 3=request rejected */
AND (SIGNOFF.REQUIRED=5 or SIGNOFF.REQUIRED=1) /* 1=Approver 5= Ad Hoc Approver */
AND (CHANGE.IN_REVIEW=1)
AND (CHANGE.RELEASE_DATE IS NULL)
AND (CHANGE.CLASS != '4928')
/* AND (PROPERTYTABLE.PROPERTYID IN (SELECT TRIM(BOTH ',' FROM CHANGE.PRODUCT_LINES) FROM CHANGE)) */
order by change.route_date desc
**** Results **********
CHANGE_NUMBER|DATE_TO_CCB|APPROVER_REQUIRED|PRODUCT_LINES
C02190|11/14/2008 3:34:02 PM|Anurag Upadhyay|270354,270362|
C02190|11/14/2008 3:34:02 PM|Dennis McGuire|270354,270362|
C02190|11/14/2008 3:34:02 PM|Hamid Khazaei|270354,270362|
C02190|11/14/2008 3:34:02 PM|Mandy York|270354,270362|
C02193|11/14/2008 3:05:18 PM|Hamid Khazaei|274279,266339,266340,266341|
C02193|11/14/2008 3:05:18 PM|Rob Brogle|274279,266339,266340,266341|
C02193|11/14/2008 3:05:18 PM|Xavier Otazo|274279,266339,266340,266341|
C02193|11/14/2008 3:05:18 PM|san|274279,266339,266340,266341|
C02194|11/14/2008 2:51:34 PM|Diana Young|271503|
C02194|11/14/2008 2:51:34 PM|Carl Krentz|271503|
C02194|11/14/2008 2:51:34 PM|Dennis Yen|271503|
C02194|11/14/2008 2:51:34 PM|Gordon Ries|271503|
C02194|11/14/2008 2:51:34 PM|Sunil Khatana|271503|
M00532|11/13/2008 1:34:42 PM|Dennis Yen|270356,270354,270360,274279,266339,266340,266341,276780,260784|
M00532|11/13/2008 1:34:42 PM|Jin Hong|270356,270354,270360,274279,266339,266340,266341,276780,260784|
M00532|11/13/2008 1:34:42 PM|Sunil Khatana|270356,270354,270360,274279,266339,266340,266341,276780,260784|
Each value in the numeric comma delimited string has a corresponding ID for the actual test string value in another table as shown below.
PROPERTYID|VALUE
260775|product 1
260776|Product 2
260777|Product x
260778|Product y
260779|Internal
260780|ORCA
260781|Tiger
260782|Orange product
260783|Restricted
260784|Product zz
266259|Product YYY
266260|Hercules
266261|Tangerine
*****Desired output****
CHANGE_NUMBER|DATE_TO_CCB|APPROVER_REQUIRED|PRODUCT_LINES
C02190|Nov/14/2008 03:34:02 PM|Anurag Upadhyay, Dennis McGuire, Hamid Khazaei, Mandy York|Product Y,Product 1
C02193|Nov/14/2008 03:05:18 PM|Hamid Khazaei, Rob Brogle, Xavier Otazo, san|Hercules,Apple,Product 3,Product zz
C02194|Nov/14/2008 02:51:34 PM|Diana Young, Carl Krentz, Dennis Yen, Gordon Ries, Sunil Khatana|Product 2
M00532|Nov/13/2008 01:34:42 PM|Dennis Yen, Jin Hong, Sunil Khatana|Product 1,Product 4,product yy,product YYY,ORCA,Tiger,Orange product,RestrictedHi,
Here's how you can do it in Oracle 8.1.
To get the individual sub-strings from product_lines, join your current result set to this "counter table"
( SELECT ROWNUM AS n
FROM all_objects
WHERE ROWNUM <= 10 -- upper bound on number of items
) cntrIf you don't know the worst case of how many items might be in product_lines, it's a little more complicated:
( SELECT ROWNUM AS n
FROM all_objects
WHERE ROWNUM <= 1 +
SELECT MAX ( LENGTH (product_lines)
- LENGTH (REPLACE (product_lines, ','))
FROM table_name
) cntrJoin this to the existing result set like this
WHERE ...
AND INSTR ( product_lines || ',' -- one extra comma added
, 1
, n
) > 0When you do the join, you will have
one copy of all the rows with one item in producgt_lines,
two copies of all the rows with two items in producgt_lines,
three copies of all the rows with three items in producgt_lines,
and so on.
When a row has been copied, each copy will have a different value of cntr.n.
To extract the n-th substring from product_lines:
SELECT ...
SUBSTR ( product_lines
, INSTR ( ',' || product_lines, ',', 1, n)
, ( INSTR (product_lines || ',', ',', 1, n)
- INSTR (',' || product_lines, ',', 1, n)
) AS product_lines_itemWhen you have derived this column, you can join to the table with the translations
WHERE TO_NUMBER (product_lines_item) = propertyidTo combine these rows into one row with a comma-delimited list, GROUP BY all the columns you want to select except the property_value ('produc 1', 'tangerine', etv.), and SELECT:
LTRIM ( MAX (CASE WHEN n = 1 THEN ',' || property_value END) ||
MAX (CASE WHEN n = 2 THEN ',' || property_value END) ||
MAX (CASE WHEN n = 10 THEN ',' || property_value END)
)I don't know a good way to re-combine the rows in Oracle 8 without assuming some limit on the number of items. I assumed there would never be more than 10 in the example above. You can say 20 or 100, I suppose, if you want to. If you guess too high, everything will still work: the query will just be slower.
This is a just one example of why packing several values into a single column is a bad idea. -
Dear Experts,
If my below query returns any rows, I want this to trigger an alert, I'm writing a shell script to do this, need help how to implement the SQL part of it. I don't think IF EXISTS is directly supported in oracle, is there a PL/SQL alternative to check below query returns any rows and if so, I need to set an alert, with row data emailed out to group.
select a.col1 from table1 a
MINUS
select b.col1 from table2 b;ThanksIn a general case you should use the Stefanetti-Kyte method as suggested in {thread:id=2432829} where you could read:
If a row is duplicated in A , then MINUS will "de-dup" it silently
select *
from (select 1 from dual union all
select 1 from dual union all
select 1 from dual union all
select 2 from dual union all
select 3 from dual
) a
minus
(select 1 from dual union all
select 2 from dual union all
select 3 from dual
) bRegards
Etbin -
Connect by - sql help : getting error ORA-01489: result of string concatena
here is an sql query and I am trying to cook a decode but since there are many columns invloved when I am trying to run this I am getting the following error:
ORA-01489: result of string concatenation is too long
Any kind of help is appreciated, I need to get this going otherwise I am dead :(
Regards
Rahul
SQL:
select sys_connect_by_path(c.decode_prep,'-') decode_prep
from (select 'DECODE(BIAPPS_11.'||substr(b.all_cols,instr(b.all_cols,',',1,a.rn)+1,instr(b.all_cols,',',1,a.rn+1)-instr(b.all_cols,',',1,a.rn)-1)||','||'RAHULKALRA.'||substr(b.all_cols,instr(b.all_cols,',',1,a.rn)+1,instr(b.all_cols,',',1,a.rn+1)-instr(b.all_cols,',',1,a.rn)-1)||',''1'',''0'')' decode_prep, rownum curr, rownum -1 prev
from (select rownum rn
from dual connect by rownum <=
(select (length('ROW_WID,COST_CENTER_NUM,COST_CENTER_NAME,COST_CENTER_DESC,CONTROL_AREA_NUM,CONTROL_AREA_NAME,CATEGORY_CODE,CATEGORY_NAME,CATEGORY_DESC,MANAGER_NAME,CURRENCY_CODE,CURRENCY_NAME,LANGUAGE_CODE,LANGUAGE_NAME,ST_ADDRESS1,ST_ADDRESS2,POST_OFFICE_BOX,CITY_NAME,STATE_CODE,STATE_NAME,REGION_CODE,REGION_NAME,COUNTRY_CODE,COUNTRY_NAME,POSTAL_CODE,PHONE_NUM,FAX_NUM,CSCN_HIER1_CODE,CSCN_HIER1_NAME,CSCN_HIER2_CODE,CSCN_HIER2_NAME,CSCN_HIER3_CODE,CSCN_HIER3_NAME,CSCN_HIER4_CODE,CSCN_HIER4_NAME,CSCN_HIER5_CODE,CSCN_HIER5_NAME,CSCN_HIER6_CODE,CSCN_HIER6_NAME,ACTIVE_FLG,CREATED_BY_WID,CHANGED_BY_WID,CREATED_ON_DT,CHANGED_ON_DT,AUX1_CHANGED_ON_DT,AUX2_CHANGED_ON_DT,AUX3_CHANGED_ON_DT,AUX4_CHANGED_ON_DT,SRC_EFF_FROM_DT,SRC_EFF_TO_DT,EFFECTIVE_FROM_DT,EFFECTIVE_TO_DT,DELETE_FLG,CURRENT_FLG,W_INSERT_DT,W_UPDATE_DT,DATASOURCE_NUM_ID,ETL_PROC_WID,INTEGRATION_ID,SET_ID,TENANT_ID,X_CUSTOM')
- length(replace('ROW_WID,COST_CENTER_NUM,COST_CENTER_NAME,COST_CENTER_DESC,CONTROL_AREA_NUM,CONTROL_AREA_NAME,CATEGORY_CODE,CATEGORY_NAME,CATEGORY_DESC,MANAGER_NAME,CURRENCY_CODE,CURRENCY_NAME,LANGUAGE_CODE,LANGUAGE_NAME,ST_ADDRESS1,ST_ADDRESS2,POST_OFFICE_BOX,CITY_NAME,STATE_CODE,STATE_NAME,REGION_CODE,REGION_NAME,COUNTRY_CODE,COUNTRY_NAME,POSTAL_CODE,PHONE_NUM,FAX_NUM,CSCN_HIER1_CODE,CSCN_HIER1_NAME,CSCN_HIER2_CODE,CSCN_HIER2_NAME,CSCN_HIER3_CODE,CSCN_HIER3_NAME,CSCN_HIER4_CODE,CSCN_HIER4_NAME,CSCN_HIER5_CODE,CSCN_HIER5_NAME,CSCN_HIER6_CODE,CSCN_HIER6_NAME,ACTIVE_FLG,CREATED_BY_WID,CHANGED_BY_WID,CREATED_ON_DT,CHANGED_ON_DT,AUX1_CHANGED_ON_DT,AUX2_CHANGED_ON_DT,AUX3_CHANGED_ON_DT,AUX4_CHANGED_ON_DT,SRC_EFF_FROM_DT,SRC_EFF_TO_DT,EFFECTIVE_FROM_DT,EFFECTIVE_TO_DT,DELETE_FLG,CURRENT_FLG,W_INSERT_DT,W_UPDATE_DT,DATASOURCE_NUM_ID,ETL_PROC_WID,INTEGRATION_ID,SET_ID,TENANT_ID,X_CUSTOM',',')))+1 total_cols
from dual)) a, (select ','||'ROW_WID,COST_CENTER_NUM,COST_CENTER_NAME,COST_CENTER_DESC,CONTROL_AREA_NUM,CONTROL_AREA_NAME,CATEGORY_CODE,CATEGORY_NAME,CATEGORY_DESC,MANAGER_NAME,CURRENCY_CODE,CURRENCY_NAME,LANGUAGE_CODE,LANGUAGE_NAME,ST_ADDRESS1,ST_ADDRESS2,POST_OFFICE_BOX,CITY_NAME,STATE_CODE,STATE_NAME,REGION_CODE,REGION_NAME,COUNTRY_CODE,COUNTRY_NAME,POSTAL_CODE,PHONE_NUM,FAX_NUM,CSCN_HIER1_CODE,CSCN_HIER1_NAME,CSCN_HIER2_CODE,CSCN_HIER2_NAME,CSCN_HIER3_CODE,CSCN_HIER3_NAME,CSCN_HIER4_CODE,CSCN_HIER4_NAME,CSCN_HIER5_CODE,CSCN_HIER5_NAME,CSCN_HIER6_CODE,CSCN_HIER6_NAME,ACTIVE_FLG,CREATED_BY_WID,CHANGED_BY_WID,CREATED_ON_DT,CHANGED_ON_DT,AUX1_CHANGED_ON_DT,AUX2_CHANGED_ON_DT,AUX3_CHANGED_ON_DT,AUX4_CHANGED_ON_DT,SRC_EFF_FROM_DT,SRC_EFF_TO_DT,EFFECTIVE_FROM_DT,EFFECTIVE_TO_DT,DELETE_FLG,CURRENT_FLG,W_INSERT_DT,W_UPDATE_DT,DATASOURCE_NUM_ID,ETL_PROC_WID,INTEGRATION_ID,SET_ID,TENANT_ID,X_CUSTOM'||',' all_cols from dual) b) c
start with curr = 1
connect by prior curr = prev
order by length(sys_connect_by_path(c.decode_prep,'-')) desc
same as above sql only difference is here I am pulling the first record from the result set which above query returns :
select ltrim(replace(decode_prep,'-','||'),'||') decode_prep
from (select sys_connect_by_path(c.decode_prep,'-') decode_prep
from (select 'DECODE(BIAPPS_11.'||substr(b.all_cols,instr(b.all_cols,',',1,a.rn)+1,instr(b.all_cols,',',1,a.rn+1)-instr(b.all_cols,',',1,a.rn)-1)||','||'RAHULKALRA.'||substr(b.all_cols,instr(b.all_cols,',',1,a.rn)+1,instr(b.all_cols,',',1,a.rn+1)-instr(b.all_cols,',',1,a.rn)-1)||',''1'',''0'')' decode_prep, rownum curr, rownum -1 prev
from (select rownum rn
from dual connect by rownum <=
(select (length('ROW_WID,COST_CENTER_NUM,COST_CENTER_NAME,COST_CENTER_DESC,CONTROL_AREA_NUM,CONTROL_AREA_NAME,CATEGORY_CODE,CATEGORY_NAME,CATEGORY_DESC,MANAGER_NAME,CURRENCY_CODE,CURRENCY_NAME,LANGUAGE_CODE,LANGUAGE_NAME,ST_ADDRESS1,ST_ADDRESS2,POST_OFFICE_BOX,CITY_NAME,STATE_CODE,STATE_NAME,REGION_CODE,REGION_NAME,COUNTRY_CODE,COUNTRY_NAME,POSTAL_CODE,PHONE_NUM,FAX_NUM,CSCN_HIER1_CODE,CSCN_HIER1_NAME,CSCN_HIER2_CODE,CSCN_HIER2_NAME,CSCN_HIER3_CODE,CSCN_HIER3_NAME,CSCN_HIER4_CODE,CSCN_HIER4_NAME,CSCN_HIER5_CODE,CSCN_HIER5_NAME,CSCN_HIER6_CODE,CSCN_HIER6_NAME,ACTIVE_FLG,CREATED_BY_WID,CHANGED_BY_WID,CREATED_ON_DT,CHANGED_ON_DT,AUX1_CHANGED_ON_DT,AUX2_CHANGED_ON_DT,AUX3_CHANGED_ON_DT,AUX4_CHANGED_ON_DT,SRC_EFF_FROM_DT,SRC_EFF_TO_DT,EFFECTIVE_FROM_DT,EFFECTIVE_TO_DT,DELETE_FLG,CURRENT_FLG,W_INSERT_DT,W_UPDATE_DT,DATASOURCE_NUM_ID,ETL_PROC_WID,INTEGRATION_ID,SET_ID,TENANT_ID,X_CUSTOM')
- length(replace('ROW_WID,COST_CENTER_NUM,COST_CENTER_NAME,COST_CENTER_DESC,CONTROL_AREA_NUM,CONTROL_AREA_NAME,CATEGORY_CODE,CATEGORY_NAME,CATEGORY_DESC,MANAGER_NAME,CURRENCY_CODE,CURRENCY_NAME,LANGUAGE_CODE,LANGUAGE_NAME,ST_ADDRESS1,ST_ADDRESS2,POST_OFFICE_BOX,CITY_NAME,STATE_CODE,STATE_NAME,REGION_CODE,REGION_NAME,COUNTRY_CODE,COUNTRY_NAME,POSTAL_CODE,PHONE_NUM,FAX_NUM,CSCN_HIER1_CODE,CSCN_HIER1_NAME,CSCN_HIER2_CODE,CSCN_HIER2_NAME,CSCN_HIER3_CODE,CSCN_HIER3_NAME,CSCN_HIER4_CODE,CSCN_HIER4_NAME,CSCN_HIER5_CODE,CSCN_HIER5_NAME,CSCN_HIER6_CODE,CSCN_HIER6_NAME,ACTIVE_FLG,CREATED_BY_WID,CHANGED_BY_WID,CREATED_ON_DT,CHANGED_ON_DT,AUX1_CHANGED_ON_DT,AUX2_CHANGED_ON_DT,AUX3_CHANGED_ON_DT,AUX4_CHANGED_ON_DT,SRC_EFF_FROM_DT,SRC_EFF_TO_DT,EFFECTIVE_FROM_DT,EFFECTIVE_TO_DT,DELETE_FLG,CURRENT_FLG,W_INSERT_DT,W_UPDATE_DT,DATASOURCE_NUM_ID,ETL_PROC_WID,INTEGRATION_ID,SET_ID,TENANT_ID,X_CUSTOM',',')))+1 total_cols
from dual)) a, (select ','||'ROW_WID,COST_CENTER_NUM,COST_CENTER_NAME,COST_CENTER_DESC,CONTROL_AREA_NUM,CONTROL_AREA_NAME,CATEGORY_CODE,CATEGORY_NAME,CATEGORY_DESC,MANAGER_NAME,CURRENCY_CODE,CURRENCY_NAME,LANGUAGE_CODE,LANGUAGE_NAME,ST_ADDRESS1,ST_ADDRESS2,POST_OFFICE_BOX,CITY_NAME,STATE_CODE,STATE_NAME,REGION_CODE,REGION_NAME,COUNTRY_CODE,COUNTRY_NAME,POSTAL_CODE,PHONE_NUM,FAX_NUM,CSCN_HIER1_CODE,CSCN_HIER1_NAME,CSCN_HIER2_CODE,CSCN_HIER2_NAME,CSCN_HIER3_CODE,CSCN_HIER3_NAME,CSCN_HIER4_CODE,CSCN_HIER4_NAME,CSCN_HIER5_CODE,CSCN_HIER5_NAME,CSCN_HIER6_CODE,CSCN_HIER6_NAME,ACTIVE_FLG,CREATED_BY_WID,CHANGED_BY_WID,CREATED_ON_DT,CHANGED_ON_DT,AUX1_CHANGED_ON_DT,AUX2_CHANGED_ON_DT,AUX3_CHANGED_ON_DT,AUX4_CHANGED_ON_DT,SRC_EFF_FROM_DT,SRC_EFF_TO_DT,EFFECTIVE_FROM_DT,EFFECTIVE_TO_DT,DELETE_FLG,CURRENT_FLG,W_INSERT_DT,W_UPDATE_DT,DATASOURCE_NUM_ID,ETL_PROC_WID,INTEGRATION_ID,SET_ID,TENANT_ID,X_CUSTOM'||',' all_cols from dual) b) c
start with curr = 1
connect by prior curr = prev
order by length(sys_connect_by_path(c.decode_prep,'-')) desc)
where rownum = 1
Edited by: Mac_Freak_Rahul on Nov 28, 2012 1:31 AM : in the first sql ')'
removed after desc in the last line so now this query will run and throw an error.Clearly your error is because the string concatenation you are doing with sys_connect_by_path is exceeding the 4000 bytes permitted by SQL.
In that case you need to concatenate your data into a CLOB datatype, for which you'll need a CLOB aggregation function...
create or replace type clobagg_type as object
text clob,
static function ODCIAggregateInitialize(sctx in out clobagg_type) return number,
member function ODCIAggregateIterate(self in out clobagg_type, value in clob) return number,
member function ODCIAggregateTerminate(self in clobagg_type, returnvalue out clob, flags in number) return number,
member function ODCIAggregateMerge(self in out clobagg_type, ctx2 in clobagg_type) return number
create or replace type body clobagg_type is
static function ODCIAggregateInitialize(sctx in out clobagg_type) return number is
begin
sctx := clobagg_type(null) ;
return ODCIConst.Success ;
end;
member function ODCIAggregateIterate(self in out clobagg_type, value in clob) return number is
begin
self.text := self.text || value ;
return ODCIConst.Success;
end;
member function ODCIAggregateTerminate(self in clobagg_type, returnvalue out clob, flags in number) return number is
begin
returnValue := self.text;
return ODCIConst.Success;
end;
member function ODCIAggregateMerge(self in out clobagg_type, ctx2 in clobagg_type) return number is
begin
self.text := self.text || ctx2.text;
return ODCIConst.Success;
end;
end;
create or replace function clobagg(input clob) return clob
deterministic
parallel_enable
aggregate using clobagg_type;
SQL> select trim(',' from clobagg(ename||',')) as enames from emp;
ENAMES
SMITH,ALLEN,WARD,JONES,MARTIN,BLAKE,CLARK,SCOTT,KING,TURNER,ADAMS,JAMES,FORD,MILLER
SQL> ed
Wrote file afiedt.buf
1 with t as
2 (select 'PFL' c1, 0 c2,110 c3 from dual union all
3 select 'LHL', 0 ,111 from dual union all
4 select 'PHL', 1, 111 from dual union all
5 select 'CHL', 2, 111 from dual union all
6 select 'DHL', 0, 112 from dual union all
7 select 'VHL', 1, 112 from dual union all
8 select 'CPHL', 0, 114 from dual union all
9 select 'WDCL', 1, 114 from dual union all
10 select 'AHL' ,2 ,114 from dual union all
11 select 'NFDL', 3, 114 from dual)
12 --
13 -- end of test data
14 --
15 select trim(clobagg(c1||' ')) as c1, c3
16 from (select * from t order by c3, c2)
17 group by c3
18* order by c3
SQL> /
C1 C3
PFL 110
LHL CHL PHL 111
DHL VHL 112
CPHL AHL NFDL WDCL 114
Maybe you are looking for
-
Can't open Acrobat pdf files in document library - SBS 2011
I've uploaded some Acrobat PDF files to a document library in the companyweb (SharePoint 2010 Foundation website) on SBS 2011. But if I click on one of them in the standard view, acrobat opens and displays a message "The URL you have provided could n
-
HP Laserjet Pro M1136 Multifunction printer installation problem
Dear Team, Recently purchased HP Laserjet Pro M1136 MultiFunction printer. But it is not installing HP scan software. But scanner is working by default drivers. Printer is not identifying when i am trying to install printer drivers.....? System drive
-
Hello Experts, Could anybody tell me what is "*@#@@[SAP]" if we r putting it in the starting of the line then it is protecting the entre code. If it so how make the code unprotected.... Do plz help to unhide the code if once it is hide with yo
-
Equipment calibration configuration and settings
Hi Gurus I would like to know the steps involved or the process flow for equipment calibration in PM. Please guide me with documents, or any website. Thanks Vidhyadharan K.P
-
I'm looking at getting a 15inch retina display MacBook Pro with 16GB of RAM and a 512GB SSD. When configuring the laptop online I noticed the price difference between the 2.4GHz processor and the 2.7GHz processor is only $100. Both are quad core i7