Numbering lines based on two columns
Hi Everyone,
I´d like to know if there is a way to achieve the numbering presented on the second table below with only native Oracle functions, like ROW_COUNT() over partition, etc.
I´m using Oracle 10g.
The logic used is:
Starting from 1, increment one every time the ORIGIN is the same as the FIRST ORIGIN of the group of rows (ID).
ID ORIGIN DESTINATION ORDER
1 A B 1
1 B A 2
1 A B 3
1 B C 4
1 C A 5
ID ORIGIN DESTINATION ORDER NUMBERING
1 A B 1 1
1 B A 2 1
1 A B 3 2
1 B C 4 2
1 C A 5 2In order to compare the ORIGIN of each row with the FIRST ORIGIN of the group I used the LAG function to create a column that will have the FIRST ORIGIN of the group value.
However I was not able to number the lines as shown above (column NUMBERING).
Any help will be much appreciated.
Test query:
WITH T AS
SELECT 1 ID, 'A' ORIGIN, 'B' DESTINATION, 1 ORDERING FROM DUAL UNION ALL
SELECT 1 ID, 'B' ORIGIN, 'A' DESTINATION, 2 ORDERING FROM DUAL UNION ALL
SELECT 1 ID, 'A' ORIGIN, 'B' DESTINATION, 3 ORDERING FROM DUAL UNION ALL
SELECT 1 ID, 'B' ORIGIN, 'C' DESTINATION, 4 ORDERING FROM DUAL UNION ALL
SELECT 1 ID, 'C' ORIGIN, 'A' DESTINATION, 5 ORDERING FROM DUAL
SELECT T.ID
, T.ORIGIN
, T.DESTINATION
, T.ORDERING
, LAG (T.ORIGIN, T.ORDERING -1, 0) OVER (PARTITION BY T.ID
ORDER BY T.ID
, T.ORDERING) FIRST_ORIGIN_OF_GROUP
FROM T
ORDER BY T.ID
, T.ORDERING
Hi,
Here's one way:
WITH got_first_origin AS
SELECT id, origin, destination, ordering
, FIRST_VALUE (origin) OVER ( PARTITION BY id
ORDER BY ordering
) AS first_origin
FROM t
SELECT id, origin, destination, ordering
, COUNT ( CASE
WHEN origin = first_origin
THEN 1
END
) OVER ( PARTITION BY id
ORDER BY ordering
) AS numbering
FROM got_first_origin
;This assumes that the combination of id and ordering is unique. Within an id, ordering does not have to be consecutive integers, or anything like that.
Analytic functions can't be nested (the argument to the anlytic COUNT function can't call the analytic FIRST_VALUE function); that's why the sub-query is necessary.
You could do something with LAG, like you tried, rather than FIRST_VALUE, but you'd still need a sub-query, for the same reason.
Similar Messages
-
Update column based on two columns
Hi,
MinValue MaxValue Desc
-1 -1
-1 1
-1 2
0 0
0 1
0 2
The above is my table which is having three columns MinValue, MaxValue, Desc. First two columns have data and I need to update the 3rd column 'Desc' based on two columns data.
I need to update like,
when MinValue=-1 and MaxValue=-1 then 'NotSpecified'
when MinValue=-1 and MaxValue=1 then 'Up to 1'
when MinValue=-1 and MaxValue=2 then 'Upto 2'
when MinValue=0 and MaxValue=1 then 'At lest 1'
when MinValue=0 and MaxValue=2 then 'At least 2'
when MinValue=0 and MaxValue=3 then 'At least 3'
The data in 'MaxValue' is like 1,2,3,4,5...50. So for each description it should append this value as mentioned above(till 'Up to 50', 'At least 50'). How can I do this with case statement?
Thanks,
Gangadhardeclare @T table ( MinValue int,MaxValue int, [Desc] nvarchar(100) );
insert @T ( MinValue, MaxValue )
values ( -1, 1 ) , ( -1, 1 ) , ( -1, 2), ( 0, 0), ( 0, 1), ( 0, 2)
select *
from @T
update @T
set [Desc] = case
when MinValue=-1 and MaxValue=-1 then 'NotSpecified'
when MinValue=-1 and MaxValue=1 then 'Up to 1'
when MinValue=-1 and MaxValue=2 then 'Upto 2'
when MinValue=0 and MaxValue=1 then 'At lest 1'
when MinValue=0 and MaxValue=2 then 'At least 2'
when MinValue=0 and MaxValue=3 then 'At least 3'
end
select *
from @T
T-SQL Articles
T-SQL e-book by TechNet Wiki Community
T-SQL blog -
Sorting based on two columns in report
Hi,
we have one issue on sorting based on two columns in report.
In the report we are doing sorting on two columns(week_id and stage_name). I have attached the screen shot for the same. The sorting is first done on the week_id and then on the stage_name. The issue comes when we have no data for the stage 1 - Prospect in W1. The stage goes to the second position.
Please suggest if there is any work around to show the 1 - Prospect stage in W1.
Regards,
Ambika Nanda.what is w1? where is screenshot? and is stage seoncd sort? if so what is the issue?
-
Parent-Child hierarchy based on two-column key
Hello
Is it possible to create a parent-child hierarchy, if the primary key of the table consists of two columns?
My table looks like:
TRACE_ID | DIAG_ID | SUPER_DIAG_ID
with TRACE_ID and DIAG_ID as PK.
If I define only DIAG_ID as PK, I can add a logical dimension (PC-hierarchy) without problems.
However when I also add TRACE_ID to my PK, I cannot select a member key in the new logical dimension window and therefore not create a logical dimension.
Is this a limitation of OBIEE and I have to merge the two colums (which would be rather bad, as there are FK relations to DIAG_ID) or is there a solution?
Regards
MatthiasDear Gowtham ,
I am very well aware of the level based hierarchy available in BO .
The issue that i have raised is all about the Parent Child Hierarchy which creates the recursive query.
I.e Every Parent has a child and that child can be parent of some other . (See the original example for more illustration) -
BC4J Objects with PKs based on two columns using multiple sequences
I have implemented a BC4J object that is based on a DB table that has two columns as the primary key. For example Table A's primary key is Group and ID and there is a DB sequence for each Group.
I use the BC4J object using servlets and JSPs and I have been able to implement an Update form.
I now want to implement a Create (New) form. I've read forum postings and info on the help regarding using the SequenceImpl class to override the EntityImpl object's create method as shown below:
protected void create(AttributeList attributeList)
super.create(attributeList);
SequenceImpl mySeq = new SequenceImpl("MY_SEQ",getDBTransaction());
setMyObjectId(mySeq.getSequenceNumber());
But as you can see I need to know the value of the group attribute before I can get the next value sequence:
For new EO belonging in Group1 I need sequence from "GROUP1_SEQ", Group 2 from "GROUP2_SEQ", etc.
I would like to put this code in the Entity Object where it belongs. I guess my problem is simply how to create a new row in the View Object with a passed parameter which is the value of Group.
Thanks in advance!Angelo:
How is the EO suppose to receive the group id? Is it from the view row? If so, the VO can pass that group id to the EO through the attribute list and calling the
public Row createAndInitRow(AttributeList nvp);
API.
Example code would be:
ViewObject myVO;
// myVO is initialized
AttributeList nvp = new oracle.jbo.NameValuePairs();
// GroupID is the attr name of the Group ID
nvp.setAttribute("GroupID", <some-value>);
Row row = myVO.createAndInitRow(nvp);
If you do that the create(AttributeList attributeList) method of the EO will receive the GroupID value coming from the VO.
Then, you can use that for your sequence.
Thanks.
Sung -
Unique row based on two columns and single column
Dear Members,
I have a table which contains duplicate rows, for which a query should be able to fetch the unique row from the table. Here the unique is not based on one column, but it should be on two columns and also check for uniqueness on one column.
create table addr ( firstname varchar2(10), lastname varchar2(10), area varchar2(3));
insert into addr values('bob', 'james', '1');
insert into addr values('bob', 'james', '1');
insert into addr values('harry', 'bert', '1');
insert into addr values('jimmy', 'bert', '1');
insert into addr values('sam', 'mac', '1');
insert into addr values('sam', 'knight', '1');
insert into addr values('tom', 'sand', '1');
insert into addr values('cat', 'mud', '1');
The output of query should contain 3 rows.
bob - james
harry - bert or jimmy - bert [ either one of them, but not both ]
sam - mac or sam - knight [ either one of them, but not both ]
tom - sand
cat - mud
SELECT firstname, lastname as total from addr WHERE area = '1' GROUP by firstname,lastname; This does not take of single column duplication..
Any suggestions..SQL> with t_data
as
select 'bob' as firstname, 'james' as lastname, '1' as area from dual union all
select 'bob', 'james', '1' from dual union all
select 'harry', 'bert', '1' from dual union all
select 'jimmy', 'bert', '1' from dual union all
select 'sam', 'mac', '1' from dual union all
select 'sam', 'knight', '1' from dual union all
select 'tom', 'sand', '1' from dual union all
select 'cat', 'mud', '1' from dual
SELECT
firstname,
lastname,
area
FROM
SELECT
t.*,
row_number() over(partition BY firstname order by 1) rn,
row_number() over(partition BY lastname order by 1) rn1
FROM
t_data t
WHERE
rn = 1
AND rn1 =1 ;
FIRSTNAME LASTNAME AREA
bob james 1
cat mud 1
jimmy bert 1
sam knight 1
tom sand 1
SQL> -
Qualified list item based on two columns
- fact table inludes following columns
key1
key2
measure1
In segment designer, update counts:
the query must counts two columns "key1 and key2" that key1 and key2 together must be distinct.Here you go:
SQL> WITH bill AS
2 (
3 SELECT 1000 AS billno, 101 AS advertiserid, 102 AS agencyid, 5000 AS total_value FROM DUAL UNION ALL
4 SELECT 1001, 101, 103, 5000 FROM DUAL UNION ALL
5 SELECT 1002, 101, 102, 1000 FROM DUAL
6 ), account AS
7 (
8 SELECT 101 AS account1_id, 102 AS account2_id, 'John' AS name, 50 AS empid FROM DUAL UNION ALL
9 SELECT 101, 103, 'James', 40 FROM DUAL UNION ALL
10 SELECT 101, 105, 'Joe', 60 FROM DUAL
11 )
12 /* End Sample Data */
13 SELECT a.name
14 , a.empid
15 , a.account1_id
16 , a.account2_id
17 , SUM(b.total_value)
18 FROM account a
19 JOIN bill b ON a.account1_id = b.advertiserid
20 AND a.account2_id = b.agencyid
21 GROUP BY a.name
22 , a.empid
23 , a.account1_id
24 , a.account2_id
25 ;
NAME EMPID ACCOUNT1_ID ACCOUNT2_ID SUM(B.TOTAL_VALUE)
John 50 101 102 6000
James 40 101 103 5000 -
Compare two tables based on two columns
Hi,
my tables looks like this:
Desc Table A (account)
Account1_id
Account2_id
name,
empid
Table B (Bill )
BillNo
Advertiserid
agencyid
total vvalue
I need to pick up total value from table B where the unique combination of advertiser-Agency id is the same as the given account1_id -Account2_id combination in table A for each employee id.
In other words my output should be like
Empid | Account_id (should be same as advertiserid)| Account2_id (same as agencyid) | sum(total_value) for this adv-agency combination.....
objective: Get the total value from table B for each unique account1-account2 combination (advertiser-agency in other words) .
I am not sure if I should use a coreelated subquery or how to handle the situation....Right now I am just checking the two columns separately like this:
select.......from a,b
where b.advertiser_id = a.account1_id and b.agencyid = b.account2id
Is it correct to do so? I have a feeling that I am missing something if I join them seperately like this......Any advice on this?
I am using Oracle 10g. Hope I am clear.Please let me know. Thankx in advance.Here you go:
SQL> WITH bill AS
2 (
3 SELECT 1000 AS billno, 101 AS advertiserid, 102 AS agencyid, 5000 AS total_value FROM DUAL UNION ALL
4 SELECT 1001, 101, 103, 5000 FROM DUAL UNION ALL
5 SELECT 1002, 101, 102, 1000 FROM DUAL
6 ), account AS
7 (
8 SELECT 101 AS account1_id, 102 AS account2_id, 'John' AS name, 50 AS empid FROM DUAL UNION ALL
9 SELECT 101, 103, 'James', 40 FROM DUAL UNION ALL
10 SELECT 101, 105, 'Joe', 60 FROM DUAL
11 )
12 /* End Sample Data */
13 SELECT a.name
14 , a.empid
15 , a.account1_id
16 , a.account2_id
17 , SUM(b.total_value)
18 FROM account a
19 JOIN bill b ON a.account1_id = b.advertiserid
20 AND a.account2_id = b.agencyid
21 GROUP BY a.name
22 , a.empid
23 , a.account1_id
24 , a.account2_id
25 ;
NAME EMPID ACCOUNT1_ID ACCOUNT2_ID SUM(B.TOTAL_VALUE)
John 50 101 102 6000
James 40 101 103 5000 -
Update multiple rows based on two columns in same row
I have a 1000 rows in a table I would like to update with a unique value. This unique value is a cocatenation of two columns in teh same row.
Each row has a (i) date and a (ii) time and a (iii) date_time column. I would like to update the date_time (iii) column with a cocatenation of the (i) date and (ii) time columns.
I know how I would update a single row but how can I update multiple rows with a cocatenation of each of the two columns - i.e put a different value into the date_time column for each row?this?
update table tab_name
set date_time =date||time
where your_condition -
How to split rows based on two columns..
Hi all...
I have a requirement.
I have product column, sell, purchace prices..(total of three columns) in a data set.
my data set is such a way that..if sale price exists...there is no purchase price and vice versa..
I need too present in a report ,two tables:
table 1 consists of only Sale price items
table 2 should contain only Pruchase Items.
Please see the below picture for clear understanding..
Is that doable? Where do we need to impose a condition?I tried to impose a condition but,it didnt seem to work
http://i51.tinypic.com/29xfdc6.jpg
Please help.Can you send me the template and xml file to [email protected]? I can try to help.
Did you try to filter out the records by the sale price or purchase price column not equal to null?
Thanks,
Bipuser -
Method Validator based on two columns
Hi,
I have a table called FndCities with attributes city_id (pk), country_id (fk) and city_name.
I want to check if a city name is unique for a certain country. For example England can have a city name called "London", but USA might have a city called "London". However neither England not USA can have two "London" cities.
I have implemented a custom method validator and here is the logic:
In the FndCitiesImpl.java i created the following method:
public boolean validateCityName(String data) {
FndCitiesDefImpl entityDef = (FndCitiesDefImpl)getDefinitionObject();
String originalValue = (String)getPostedAttribute(CITYNAME);
Number originalValuePk = (Number)getPostedAttribute(COUNTRYPKFK);
if (data != null && !data.equalsIgnoreCase(originalValue)) {
return !(entityDef.existsByCityName(getDBTransaction(),data, originalValuePk));
return true;
and in the FndCitiesDefImpl.java i have implemented the method existsByCityName(DBTransaction, city_name, country_id).
In the creation method my custom validation works fine, however when i edit a record, becuase the if statement watches for changes in the city name, when changing the Country the validation is not performed. I cannot the country id in the validateCityName method because validation is performed on one column.
How can i achieve this?
Thanks
AntonisHi Antonis,
Not sure what you mean again by "JDeveloper does not handle the constraints properly." I have exactly this situation in my application (JDev 10.1.3.1), and I am using a database constraint to enforce uniqueness across 2 columns. I've customized the error messages (see Re: Unique key existence check and ER: ADF BC - allow custom error msgs for common exceptions (e.g. DML) ). Works just dandy.
John -
Percentage calculation in t-sql based on two columns
Hi All
I have a source table with 4 columns and data like this..
ID Cnt Col1 Col2
1 22 17 5
2 20 15 5
3 12 5 7
4 10 null 10
5 25 25 null
My output should look like this..
ID Cnt Col1 Col2 Col1% Col22%
1 22 17 5 77.27 22.73
2 20 15 5 75.00 25.00
3 12 5 7 41.66 58.34
4 10 10 0 100
5 25 25 100 0
Create Statement:
CREATE TABLE [dbo].[Sample] (
[ID] Int NOT NULL,
[Cnt] Int NULL,
[Col1] Int NULL,
[Col2] Int NULL,
CONSTRAINT [Sample] PRIMARY KEY CLUSTERED
[ID] ASC
Insert Statement:
insert into Sample(ID, cnt,Col1, col2) values (1 , 22 , 17 , 5 )
insert into Sample(ID, cnt,Col1, col2) values (2 , 20 , 15 , 5 )
insert into Sample(ID, cnt,Col1, col2) values (3 , 12 , 5 , 7 )
insert into Sample(ID, cnt,Col1, col2) values (4 , 10 , null , 10 )
insert into Sample(ID, cnt,Col1, col2) values (5 , 25 , 25 , null)
Right now I am using below SQL but % fields are not coming correct.
Select (COUNT(CASE WHEN (col1-col2)) < 1) THEN -1 END) /COUNT(*) * 100) AS Col1%
,(COUNT(CASE WHEN (col1-col2) >=1) THEN 1 END) /COUNT(*) * 100) AS Col2%
I need SQL to get correct values in col1% and col2%
Thanks,
RH
sqlIs it what you need:
SELECT Id
,cnt
,col1
,col2
,CASE
WHEN Col1 IS NULL
OR Col1 = 0
THEN 0
ELSE CAST((col1 * 100.0) / cnt AS DECIMAL(10, 2))
END AS [Col1%]
,CASE
WHEN Col2 IS NULL
OR Col2 = 0
THEN 0
ELSE CAST((col2 * 100.0) / cnt AS DECIMAL(10, 2))
END AS [Col2%]
FROM Sample
For every expert, there is an equal and opposite expert. - Becker's Law
My blog
My TechNet articles -
How to display data based on two columns in Apex calendar?
I have a table for holiday details with 2 date columns...from-date and a to-date. I need to display the name of the person for the date range they have specified. For Ex if i applied for leaves from may 1 to may 4...the calendar should display my name for 4 dates i.e may1,2,3 and 4
I am new user in apex and still trying new things. Please help me achieve this.Swetha
I created an application using Apex. It is a calendar application to show events that are happening. I ran into an issue with it
If there is an event that occurs during an interval like August15 - August22, the event is shown only on August15, which is the first day of the event. I would like to show it in all days from August15-22.
Here are the items coming from the page
event_id number,
employee_id number
date_from date,
date_to date,
due_date date,
act_id number,
act_loc varchar2,
reminder varchar2,
frequency varchar2,
division varchar2,
event_status varchar2
I am looking to write a process / procedure where it can show the same event on all the days it is occurring
Thanks in advance
Latha -
Error when splitting a Table into two columns - Please help!
Hi!
I have created a table in which I have created a header which has been split into 3 parts conisting of 2 columns. These all work fine. However, when I try to split the row below the header row into 2 columns, it does so but, in a way, connects the line inbetween the two columns with the line inbetween the two columns above and will not allow me to move it left or right by manually changing specs or dragging the line. Please help! (I'm using CS5 by the way!) Thank you!I suggest you begin with a pre-built CSS Layout. DW has several to help jump start your projects. Go to File > New Blank Page > HTML. Select a layout from the 3rd panel and hit CREATE. See screenshot.
Save this layout as test.html and begin building your prototype page saving and validating code often during your work sessions.
Code Validation Tools
CSS - http://jigsaw.w3.org/css-validator/
HTML - http://validator.w3.org/
Good luck with your project!
Nancy O. -
Calculate percrentage based on 2 column and one filter
Hi,
I am looking for a way to compute percentage based one two column and 1 filter but i have a problem when every thing is checked on my filter.
The table as follow is my example:
ID
cat1
cat2
number
total
pct
1
a
aa
5
40
13%
1
a
ab
20
40
50%
1
a
ac
15
40
38%
1
b
ba
12
47
26%
1
b
bb
20
47
43%
1
b
bc
15
47
32%
2
a
aa
9
45
20%
2
a
ab
16
45
36%
2
a
ac
20
45
44%
2
b
ba
10
50
20%
2
b
bb
20
50
40%
2
b
bc
20
50
40%
I create a power table as follow:
Filter: column ID
Axis: cat1 and cat2
values: pct
The problem is when I want to select all my data in my filter, a sum/mean is done for pct but the results are wrong. Did I missed something ? Is there a way to correct the problem ?Hi mi jo,
It appears that you have created your percentage as a Calculated Column and what you actually want is a Calculated Field.
You can create a Calculated Field by clicking on the Power Pivot ribbon and using a DAX formula similar to the following:
Percentage:=DIVIDE(SUM(TableName[number]), SUM(TableName[total]))
I have formatted this Calculated Field as a percentage and used it to create a Pivot Table:
Is this what you were after or have I misunderstood the problem?
Edit: Just took a quick look at the workbook and can see that the pct column is coming in as a fixed value for a row. The above solution should help. A best practice would be to first create a Calculated Field for each of the number and
total columns such as...
Sum of Number:=Sum(TableName[number])
And...
Sum of Total:=Sum(TableName[total])
And then finally update this DAX formula:
Percentage:=DIVIDE(SUM(TableName[number]), SUM(TableName[total]))
To this...
Percentage:=DIVIDE([Sum of Number], [Sum of Total])
Regards,
Michael Amadi
Please use the 'Mark as answer' link to mark a post that answers your question. If you find a reply helpful, please remember to vote it as helpful :)
Website: http://www.nimblelearn.com
Blog: http://www.nimblelearn.com/blog
Twitter: @nimblelearn
Maybe you are looking for
-
Using a file in a Dashboard Embedded Content
If I remember correctly I could include a .pdf file in a dashboard (obiee 10g). Now in 11g, the embedded content properties points to an URL. I suppose I can still access a file (in a network drive or local drive for testing) but I am struggling with
-
How do I Export a -section- of a sequence?
I have an hour-long sequence that was recorded one take without breaks. I've chopped it using the blade tool into smaller "chapters" Is there any way to export just one section of the sequence? Or, is there any way to export these chopped "chapters"
-
This is a IN-DEPTH guide on how to spot the nonesense that scammers try to tell you. LEGEND SCAM: "A fraudulent scheme performed by a dishonest individual, group, or company in an attempt obtain money or something else of value. Scams traditionally r
-
Processing of a Form when a WEB Service is not available
Has anyone else noticed this or has a work-around suggestion? Note I am very new to this product. Background: We tied a WEB service call to a button on our PDF Form. When the user started the process they filled in the form but did not use the button
-
Change of doc type in billing type
in billing document type F2, document type is assigned as RV but in billing document type S1 no document is assigned (it is blank). during cancellation of billing document, finance voucher is created with document type AB (which is not assigned in