Decode for this case statement?
case when DES ='TL' or ROLE ='TL' THEN 'PM' ELSE 'PL' end case
May be it does not work with number.
Oracle 10g
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Apr 27 16:26:06 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> create table test (role number(10), desgn number(10));
Table created.
SQL> insert into test (role,desgn) values (1,100);
1 row created.
SQL> insert into test (role,desgn) values (11,11);
1 row created.
SQL> select decode ('11', to_char(role),'11', to_char(desgn), 'PM', 'TL') from test ;
DE
11
SQL>
Thanks.
Similar Messages
-
SQL Expression in decode function or case statement?
Can I put SQL expressions in decode function or case statement?
For example,
select le.profile, decode( select count(1) from profile_data where NAME= 'XXXX_AFTER' and object_id = le.profile, 0, 'N', 'Y')
from element le;
or
select le.profile, case WHEN ( select count(1) from profile_data where NAME= 'XXXX_AFTER' and object_id = le.profile) = 0 THEN 'N'
ELSE 'Y'
from element le;
None of the above work.
Can anyone tell me how to make it work?
Is there any workaround?
Thanks,
JYou simply needed and END to your CASE statement;
SQL> with profile_data as (
select 'XXXX_AFTER' name, 1 object_id from dual),
element as (
select 1 profile from dual union all
select 2 from dual)
select le.profile,
case WHEN ( select count(1) from profile_data where NAME= 'XXXX_AFTER' and object_id = le.profile) = 0
THEN 'N'
ELSE 'Y'
END new_col
from element le
PROFILE N
1 Y
2 N -
Question about this case statement...Never seen it written this way
I have this case statement written by a developer and i am trying to understand what he was trying to accomplish with writing it in this manner
CASE t_CELL
WHEN 'XML' THEN
'Mods'
ELSE
CASE WHEN t_CELL IS NOT NULL THEN
t_Cell
ELSE
CELL
END
END
= CELL OR CASE t_CELL
WHEN 'XML' THEN
'Amps'
ELSE
CASE WHEN t_CELL IS NOT NULL THEN
t_Cell
ELSE
CELL
END
END = CELL);What is throwing me off is the = CELL that was included..Kindly note, this is just a sample codeHi,
If x and cell are strings, then I trust you understand what it means to compare them by saying:
x = cellx can be any kind of expression that returns a string.
For example, do you understand what it means if x is a string literal, like this?
'Amps' = cellDo you understand what it means when x is another string column, like this?
t_cell = cellDo you understand what it means when x is a function that returns a string, like this?
TO_CHAR (SYSDATE, 'Dy') = cellIn the code you posted, the CASE expression is just another way of specifying a string value for x:
CASE ... END = cellA CASE expression is just another kind of expression, that is, another thing that can replace x on the left of the = sign.
It looks like the condition you posted is equivalent to:
( ( t_cell = 'XML'
AND cell IN ('Amps', 'Mods')
OR ( t_cell != 'XML'
AND cell = t_cell
OR t_cell IS NULL
) -
You may need an additional audio decoder to play the soundtrack of this file.
This file contains a track in the Dolby AC3 Audio (code "8192") format. You may need to install a DirectShow decoder for this audio format in order to hear the soundtrack of this file.Luckily, there are DOZENS of video/media players and extensions avaliable for the Mac. Many of them are FREE, some of the better FREE ones are...
PERIAN (quicktime extension)
http://perian.org/
QUICKTIME 7.6.6
http://support.apple.com/kb/DL923
VLC media player
http://www.videolan.org/vlc/
NICEPLAYER
https://code.google.com/p/niceplayer/
And if none of those work, there is a possibility that those video files may be corrupted. -
Why doesn't this case statement work?
SELECT
case when PRODUCTS.PRODUCT_NAME in
select case when rank() over(order by ( sum(ag.RX_CNT) ) desc) < 6 then ( p.PRODUCT_NAME ) else 'XXXX' END RankedProduct
FROM
PAP_MONTHLYTIME_DIM m,
PAP_PRESCRIPTIONS_DEMOG_AGG ag,
PRODUCTS p,
PAP_ENROLLMENT_FLAGS_DIM f
WHERE
( m.MONTHLYTIME_DIM_ID = ag.MONTHLYTIME_DIM_ID )
AND ( ag.ENROLLMENT_FLAGS_DIM_ID = f.ENROLLMENT_FLAGS_DIM_ID )
AND ( p.PRODUCT_ID = ag.PRODUCT_DIM_ID )
AND ( f.ACTIVE_FLAG = 'Y' )
AND m.CALENDAR_YEAR_MONTH = '2007-04'
GROUP BY
m.MONTH_END_DATE,
p.PRODUCT_NAME
then
( PRODUCTS.PRODUCT_NAME ) else 'All Other' end as ProdNm,
PRODUCTS.PRODUCT_NAME,
sum(PAP_PRESCRIPTIONS_DEMOG_AGG.RX_CNT)
FROM
PRODUCTS,
PAP_PRESCRIPTIONS_DEMOG_AGG
WHERE
( PRODUCTS.PRODUCT_ID=PAP_PRESCRIPTIONS_DEMOG_AGG.PRODUCT_DIM_ID )
GROUP BY
PRODUCTS.PRODUCT_NAME
The first case statement is not working properly. First off - I know I can do this without the subquery in the case statement, but it's then tied to the Month and I don't want that.
The result set of the subquery contains valid product_names that match EXACTLY (I added LTRIM RTRIM just in case), but the ProdNm field still evaluates to "All Other" for them. If I change the subquery to something basic and remove the rank function, it works, but of course I need that function. My understanding is that it shouldn't matter what function is in the subquery. I thought Oracle would get the result set of the subquery first, then evaluate the case statement based on the result set (the subquery is obviously not correlated).
Any ideas?
Thanks.My understanding is that it shouldn't matter what function is in the subquery. I thought Oracle would get the result set of the subquery first, then evaluate the case statement based on the result set (the subquery is obviously not correlated). It looks like the queries ARE somehow correlated. Consider the two simplified queries:
michaels> SELECT ename, deptno,
CASE
WHEN deptno IN (
SELECT CASE
WHEN ROW_NUMBER () OVER (ORDER BY NULL) < 3
THEN deptno
ELSE 1000
END
FROM dept)
THEN 'Found'
ELSE 'NOT Found'
END FOUND
FROM emp
ORDER BY deptno
ENAME DEPTNO FOUND
CLARK 10 NOT Found
KING 10 NOT Found
MILLER 10 NOT Found
JONES 20 NOT Found
FORD 20 NOT Found
ADAMS 20 NOT Found
SMITH 20 NOT Found
SCOTT 20 NOT Found
WARD 30 NOT Found
TURNER 30 NOT Found
ALLEN 30 NOT Found
JAMES 30 NOT Found
BLAKE 30 NOT Found
MARTIN 30 NOT Found
michaels> SELECT ename, deptno,
CASE
WHEN deptno IN (
SELECT *
FROM (SELECT CASE
WHEN ROW_NUMBER () OVER (ORDER BY NULL) < 3
THEN deptno
ELSE 1000
END
FROM dept))
THEN 'Found'
ELSE 'NOT Found'
END FOUND
FROM emp
ORDER BY deptno
ENAME DEPTNO FOUND
CLARK 10 Found
KING 10 Found
MILLER 10 Found
JONES 20 Found
FORD 20 Found
ADAMS 20 Found
SMITH 20 Found
SCOTT 20 Found
WARD 30 NOT Found
TURNER 30 NOT Found
ALLEN 30 NOT Found
JAMES 30 NOT Found
BLAKE 30 NOT Found
MARTIN 30 NOT FoundSo in the first query ROW_NUMBER() evaluates to NULL (not sure why) so the condition will never be satisfied! This is easily proofed when actually testing for nullity:
WHEN ROWNUM() OVER (ORDER BY NULL) IS NULL THEN
...will always show 'Found'!
Inlining the subquery »materializes« it, and ROW_NUMBER() gets the desired value. -
Hi All
I have one table called agreementproductkey and some columns namely Agreementproductid, keytext, fliename etc.
There is some condition if agreement product id in not null and keytext field and fileaname field is null then i need to display the value as "NO FILE"
This what i tried
select decode(keytext || ' | ' || filename,null,'No File',keytext || filename) display_value, id return_value
from agreementproductkey
where agreementproductid = 3173
But i didnt get the NO FILE when key text field and filename field is null for this agreementproductid.
Thanks & Regards
Srikkanth.MHi Srikkanth,
In the decode part, you have concatenated keytext and filename using '|' due to which it will never evaluate to null, and hence 'NOFILE' will never be displayed. CASE is a better option instead of DECODE.
SQL> CREATE TABLE t (agreementid NUMBER, keytext VARCHAR2(10), filename VARCHAR2(10));
Table created
SQL> INSERT INTO t VALUES (123, 'ABC', 'ABCFile');
1 row inserted
SQL> INSERT INTO t VALUES (123, NULL, 'XYZFile');
1 row inserted
SQL> INSERT INTO t VALUES (123, 'PQR', NULL);
1 row inserted
SQL> INSERT INTO t VALUES (123, NULL, NULL);
1 row inserted
SQL> SELECT agreementid, keytext, filename,
2 DECODE(agreementid, NULL, 'AGREEMENT NULL', DECODE(keytext || filename, NULL, 'NO FILE', 'FILE PRESENT'))
3 FROM t;
AGREEMENTID KEYTEXT FILENAME DECODE(AGREEMENTID,NULL,'AGREE
123 ABC ABCFile FILE PRESENT
123 XYZFile FILE PRESENT
123 PQR FILE PRESENT
123 NO FILE
SQL> Regards
Ameya -
Can't figure out the correct syntax for this select statement
Hello,
The following statement works great and gives the desired results:
prompt
prompt Using WITH t
prompt
with t as
select a.proj_id,
a.proj_start,
a.proj_end,
case when (
select min(a.proj_start)
from v b
where (a.proj_start = b.proj_end)
and (a.proj_id != b.proj_id)
is not null then 0 else 1
end as flag
from v a
order by a.proj_start
select proj_id,
proj_start,
proj_end,
flag,
-- the following select statement is what I am having a hard time
-- "duplicating" without using the WITH clause
select sum(t2.flag)
from t t2
where t2.proj_end <= t.proj_end
) s
from t;As an academic exercise I wanted to rewrite the above statement without using the WITH clause, I tried this (among dozens of other tries - I've hit a mental block and can't figure it out):
prompt
prompt without with
prompt
select c.proj_id,
c.proj_start,
c.proj_end,
c.flag,
-- This is what I've tried as the equivalent statement but, it is
-- syntactically incorrect. What's the correct syntax for what this
-- statement is intended ?
select sum(t2.flag)
from c t2
where t2.proj_end <= c.proj_end
) as proj_grp
from (
select a.proj_id,
a.proj_start,
a.proj_end,
case when (
select min(a.proj_start)
from v b
where (a.proj_start = b.proj_end)
and (a.proj_id != b.proj_id)
is not null then 0 else 1
end as flag
from v a
order by a.proj_start
) c;Thank you for helping, much appreciated.
John.
PS: The DDL for the table v used by the above statements is:
drop table v;
create table v (
proj_id number,
proj_start date,
proj_end date
insert into v values
( 1, to_date('01-JAN-2005', 'dd-mon-yyyy'),
to_date('02-JAN-2005', 'dd-mon-yyyy'));
insert into v values
( 2, to_date('02-JAN-2005', 'dd-mon-yyyy'),
to_date('03-JAN-2005', 'dd-mon-yyyy'));
insert into v values
( 3, to_date('03-JAN-2005', 'dd-mon-yyyy'),
to_date('04-JAN-2005', 'dd-mon-yyyy'));
insert into v values
( 4, to_date('04-JAN-2005', 'dd-mon-yyyy'),
to_date('05-JAN-2005', 'dd-mon-yyyy'));
insert into v values
( 5, to_date('06-JAN-2005', 'dd-mon-yyyy'),
to_date('07-JAN-2005', 'dd-mon-yyyy'));
insert into v values
( 6, to_date('16-JAN-2005', 'dd-mon-yyyy'),
to_date('17-JAN-2005', 'dd-mon-yyyy'));
insert into v values
( 7, to_date('17-JAN-2005', 'dd-mon-yyyy'),
to_date('18-JAN-2005', 'dd-mon-yyyy'));
insert into v values
( 8, to_date('18-JAN-2005', 'dd-mon-yyyy'),
to_date('19-JAN-2005', 'dd-mon-yyyy'));
insert into v values
( 9, to_date('19-JAN-2005', 'dd-mon-yyyy'),
to_date('20-JAN-2005', 'dd-mon-yyyy'));
insert into v values
(10, to_date('21-JAN-2005', 'dd-mon-yyyy'),
to_date('22-JAN-2005', 'dd-mon-yyyy'));
insert into v values
(11, to_date('26-JAN-2005', 'dd-mon-yyyy'),
to_date('27-JAN-2005', 'dd-mon-yyyy'));
insert into v values
(12, to_date('27-JAN-2005', 'dd-mon-yyyy'),
to_date('28-JAN-2005', 'dd-mon-yyyy'));
insert into v values
(13, to_date('28-JAN-2005', 'dd-mon-yyyy'),
to_date('29-JAN-2005', 'dd-mon-yyyy'));
insert into v values
(14, to_date('29-JAN-2005', 'dd-mon-yyyy'),
to_date('30-JAN-2005', 'dd-mon-yyyy'));Hi, John,
Not that you asked, but as you proabably know, analytic functions are much better at doing this kind of thing.
You may be amazed (as I continually am) by how simple and efficient these queries can be.
For example:
WITH got_grp AS
SELECT proj_id, proj_start, proj_end
, proj_end - SUM (proj_end - proj_start) OVER (ORDER BY proj_start) AS grp
FROM v
SELECT ROW_NUMBER () OVER (ORDER BY grp) AS proj_grp
, MIN (proj_start) AS proj_start
, MAX (proj_end) AS proj_end
FROM got_grp
GROUP BY grp
ORDER BY proj_start
;Produces the results you want:
PROJ_GRP PROJ_START PROJ_END
1 01-Jan-2005 05-Jan-2005
2 06-Jan-2005 07-Jan-2005
3 16-Jan-2005 20-Jan-2005
4 21-Jan-2005 22-Jan-2005
5 26-Jan-2005 30-Jan-2005This is problem is an example of Neighbor-Defined Groups . You want to GROUP BY something that has 5 distinct values, to get the 5 rows above, but there's nothing in the table itself that tells you to which group each row belongs. The groups are not defined by any column in hte table, but by relationships between rows. In this case, a row is in the same group as its neighbor (the row immediatly before or after it when sorted by proj_start or proj_end) if proj_end of the earlier row is the same as proj_start of the later row. That is, there is nothing about 03-Jan-2005 that says the row with proj_id=2 is in the first group, or even that it is in the same group with its neighbor, the row with proj_id=3. Only the relation between those rows, the fact that the earlier row has end_date=03-Jan-2005 and the later row has start_date=03-Jan-2003, that says these neighbors belong to the same group.
You're figuring out when a new group starts, and then counting how many groups have already started to see to which group each row belongs. That's a prefectly natural procedural way of approaching the problem. But SQL is not a procedural language, and sometimes another approach is much more efficient. In this case, as in many others, a Constant Difference defines the groups. The difference between proj_end (or proj_start, it doesn't matter in this case) and the total duratiojn of the rows up to that date determines a group. The actual value of that difference means nothing to you or anybody else, so I used ROW_NUMBER in the query above to map those distinct values into consecutive integers 1, 2, 3, ... which are a much simpler way to identify the groups.
Note that the query above only requires one pass through the table, and only requires one sub-query. It does not need a WITH clause; you could easily make got_grp an in-line view.
If you used analytic functions (LEAD or LAG) to compute flag, and then to compute proj_grp (COUNT or SUM), you would need two sub-queries, one for each analytic function, but you would still only need one pass through the table. Also, those sub-queries could be in-line views; yiou would not need to use a WITH clause. -
What is the syntax for a CASE statement in Crystal XI
I'm having difficulty locating documentation for the use of CASE statements in Crystal syntax. My database administrator does not allow me to write SQL expressions so I need to covert the SQL below to Crystal Syntax. Can anyone help me? Thank you very much!!
Select
CASE
WHEN projects.ProjType like 'S%' then 'Shopping Center'
WHEN projects.ProjType like 'I%' then 'Industrial'
WHEN projects.ProjType like 'O%' then 'Office Building'
ELSE 'Other'
END
from projectsLet's assume column XYZ has both numbers (1), and letters (any alphabet).
I have a case statement on SQL to turn any value that's not 1 into 0, then I am getting a sum of that column.
I am also grouping by Row A, B etc to get aggregated sum of column XYZ for those group.
Now on Crystal Reports function, I need to sum up values under column XYZ for all the groups.
If I try using sum function like below, I get an error stating:
"A number field or currency amount field is required here"
(sum({Command.XYZ}))
So I thought if I can use a case statement to change the non-numbers to 0 prior to sum that will probably resolve it. But I could not get the below case statement to work either (Error: A string is required).
SELECT {Command.XYZ}
Case 1:
1
Default:
0; -
Need help with this CASE statement
Hi everyone,
I would like to create a CASE that references another view and uses fields in that view to create a new field in a new view.
The fields I am working with are called LEVEL_CD and AVAILABLE_AMT.
In this case I would like to create a field called AVAILABLE_AMT (in my new view) that inserts the AVAILABLE_AMT from the old view into the new field only if the LEVEL_CD = 1. If the LEVEL_CD is anything else but 1 I would like to insert a 0 into my new
AVAILABLE AMOUNT field.
This is what I have so far and it doesn't seem to work:
CASE WHEN old_view.LEVEL_CD = 1 THEN old_view.AVAILABLE_AMT
WHEN old_view.LEVEL_CD <> 1 THEN 0 END AS AVAILABLE_AMT
This just gives me zeroes in every record. Can anybody spot what I am doing wrong?
Thanks!SELECT <columns>,CASE WHEN old_view.LEVEL_CD
=
1
THEN old_view.AVAILABLE_AMT
ELSE 0 END AS AVAILABLE_AMTFROM old_view.PK JOIN new_view.PK WHERE....PS.PK -Primary Key
Best Regards,Uri Dimant SQL Server MVP,
http://sqlblog.com/blogs/uri_dimant/
MS SQL optimization: MS SQL Development and Optimization
MS SQL Consulting:
Large scale of database and data cleansing
Remote DBA Services:
Improves MS SQL Database Performance
SQL Server Integration Services:
Business Intelligence -
Do I need a Singleton pattern for this case
Hello,
I'm writing a game in Java and I have a very simple score manager class which just tracks the points the player so far has. I need to access this class in different pars of my app (gui, game core ...) so I created a singleton class which looks like this
public class ScoreManager {
private static ScoreManager instance = new ScoreManager();
private int score = 0;
private int highScore = 0;
public static ScoreManager getInstance() {
return instance;
public int getScore() {
return score;
public int getHighScore() {
return highScore;
public void addScore(int scoreToAdd){
score += scoreToAdd;
if(score > highScore) {
highScore = score;
}so far so good ..
I would like to read the "highScore" from a file when the game starts and write it back when the game ends. I added those two methods:
public void init(File highScoreFile) {
highScore = readFromFile(highScoreFile);
score = 0;
public void dispose(File highScoreFile) {
writeToFile(highScoreFile);
}So basically I call the init() method when the game stars and the dispose() when the game ends.
It works but what I don't like is that the init() and dispose() methods are exposed and someone could call them in a wrong place.
What would be a better way to do this ?
Thanks for your help,
Jessesafarmer wrote:
You could keep track of the state (initialised, destroyed etc) in the manager and only perform the action if it is an expected state.
private enum State { NOT_INITIALISED, INITIALISED, DESTROYED};
private State currentState = State.NOT_INITIALISED;
// i will leave the rest up to your imagination :) this looks good, thanks
anotherAikman wrote:
>
It works but what I don't like is that the init() and dispose() methods are exposed and someone could call them in a wrong place. And who would that be? You´re the only one using the code, aren´t you?
If not, you could still include in the documentation where to call those methods.
no I'm not the only one working on this. Documentation can be useful but does not prevent calling wrong methods.
YoungWinston wrote:
I don't see any constructor. Usually, a singleton class should have a private one, even if it has no parameters. If you don't have any, Java will create a public no-parameter one as default.ok I forgot the private constructor.
It works but what I don't like is that the init() and dispose() methods are exposed and someone could call them in a wrong place. Then my advice would be not to make them public. After all, your code is the only one calling these methods - yes?yes only the code of the app calls it.
If you are convinced that your game requires one and only one score manager, then a singleton is probably the best way to go.
I'm a little worried about the init() and dispose() methods though, because these suggest state changes, which is unusual for the singleton pattern. You may want to think about synchronizing them.
An alternative might be to use properties to get and store your scores.ok for the synchronization. What would using the properties ? It would be just another type of storage backend and I'd still need to read/write it.
Thanks for your help,
J -
How to ''give'' error for this case of an EXTERNAL TABLE?
Our external table routine works fine:
-- We have a csv file with 2 cols.
-- When we create the table referring the csv it works fine.
-- Even if the csv has more the 2 cols, the ET command only takes the 2 cols and it works fine.
-- Now, users are saying that if the csv has more than 2 cols, the ET command should give an error
I went through the command but cannot find any clause which will do this.
Is there any other way or workaround?
CREATE TABLE <table_name> (
<column_definitions>)
ORGANIZATION EXTERNAL
(TYPE oracle_loader
DEFAULT DIRECTORY <oracle_directory_object_name>
ACCESS PARAMETERS (
RECORDS DELIMITED BY newline
BADFILE <file_name>
DISCARDFILE <file_name>
LOGFILE <file_name>
[READSIZE <bytes>]
[SKIP <number_of_rows>
FIELDS TERMINATED BY '<terminator>'
REJECT ROWS WITH ALL NULL FIELDS
MISSING FIELD VALUES ARE NULL
(<column_name_list>))\
LOCATION ('<file_name>'))
[PARALLEL]
REJECT LIMIT <UNLIMITED | integer>;
Is it possible to use the READSIZE?
Edited by: Channa on Sep 23, 2010 2:28 AM-- Now, users are saying that if the csv has more than 2 cols, the ET command should give an error
I went through the command but cannot find any clause which will do this.
Is there any other way or workaround?I looked at Serverprocess' sql*loader script and did not see how that would answer your question - how to raise an error if the file has more than 2 columns. If I missed something can Serverprocess explain?
I can't think of a direct way to do this with your external table either, but there may be indirect ways. Some brainstorming ideas of perhaps dubious usefulness follow.
Placing a view over the external table can limit results to the first two columns but won't raise an error.
A pipelined function can read the external table, check for data where there shouldn't be any, and raise an exception when you find data in columns where there should not be any.
Similarly, you could ditch the external table and use utl_file to read the file, manually parsing and checking the data. LOTS more work but more control on your end. External tables are much easer to use :(
Or, first load the external table into a work table before the "real" select. Check the work table for the offending data programatically and raise an error if data is where it should not be. You could keep the existing external table and not have to do a lot of recoding.
Or, also load the data into an otherwise unneeded global temporary table first. Use a trigger on the load to look for the unwanted data and raise an error if offending data is there
These ideas are boiling down to variations on validating the data before you use it.
Good luck! -
Data aggregation: which solution for this case ?
Hi all,
I have a fact table where measures are referred to a single year. Outlining, something like this:
year quantity
1998 30
1998 20
2000 70
2001 20
2001 20
I would to build a cube and then to analyze "tot.quantity for each year" but don't want aggregate "tot.quantity for all year".
I haven't in my source database the "Year dimension" to mapping on year field.
Do you have some suggestions on how to implement this and how to build cube using AWM tools (Year dimension and relative levels/hierarchies)?
thanks.I am not sure I fully understand what you are trying to do, but from the example below you could create a single dimension called Year with one level of Year, add a hierarchy containing only one level, create a cube dimensioned by year and then map the table you have described below to the cube. As there is only one level in the dimension, no aggregation would performed by AWM.
For the mapping you will need to create a view over your source table as follows:
CREATE VIEW FACT_VIEW AS SELECT, YEAR, SUM(QUANTITY) FROM TABLE GROUP BY YEAR
because AWM does not support an additive data loading model (surprisingly the API actually does but this is not exposed in AWM). You can only provide a single row for each dimension member. If you present multiple rows then the last row wins which in your example would result in the following data being loaded into AWM:
1998 20
2000 70
2001 20
If you create the view as shown above you should get the following data loaded:
1998 50
2000 70
2001 40
which is what I think you want?
Hope this helps
Keith Laker
Oracle EMEA Consulting
OLAP Blog: http://oracleOLAP.blogspot.com/
OLAP Wiki: http://wiki.oracle.com/page/Oracle+OLAP+Option
DM Blog: http://oracledmt.blogspot.com/
OWB Blog : http://blogs.oracle.com/warehousebuilder/
OWB Wiki : http://wiki.oracle.com/page/Oracle+Warehouse+Builder
DW on OTN : http://www.oracle.com/technology/products/bi/db/11g/index.html -
What query should be created for this case
Here are those classes:
Folder{
String name;
@ManyToOne
Subject owner;
Subject {
String name;
}What query should I create in order to: find out if there is an actual Folder for a Subject with the name X in the database ?
Actually, the question is kinda stupid, but im not experienced with queries....javaUserMuser wrote:
Here are those classes:
Folder{
String name;
@ManyToOne
Subject owner;
Subject {
String name;
}What query should I create in order to: find out if there is an actual Folder for a Subject with the name X in the database ?Can't tell based on the info you posted. These are Java objects, and queries deal with relational tables.
Your naming is confusing. Subject and owner are two very different things.
If I had two tables like this:
CREATE TABLE IF NOT EXISTS owners
owner_id bigint not null auto_increment,
name varchar(80),
primary key(owner_id)
CREATE TABLE IF NOT EXISTS folders
folder_id bigint not null auto_increment,
name varchar(80),
owner_id bigint
primary key(folder_id),
foreign key(owner_id) references(owners)
);I'd write the JOIN query this way:
SELECT f.name, o.name
FROM folders as f, owners as o
WHERE o.owner_id = ?
AND o.owner_id = f.owner_idYou realize, of course, that if you're using EJB3 as the annotations suggest, that you don't write any SQL. EJB3 generates it dynamically for you.
% -
Hello I am looping through all my DBs and issuing 'ALTER INDEX ALL ON ' + @Table + ' REBUILD' which succeeds for the first few DBs but is failing on a particular one. This job had been running fine in the past successfully to completion but
what is that error message mean and why is it now failing?
Thanks in advance.Strange it succeeded when I re-run it manually hard coding that DB's name.
It's pretty much doing just mainly doing the alter index cycling through all DBs on SQL Server and logs it into SQL log as:
EXEC
xp_logevent50001,
@CustomLogMessage, INFORMATIONAL
which seems to work as it does list my @CustomLogMessage I specified it as. -
Feedback request for this case
http://www.amazon.com/Premium-Crystal-Silicone-Precut-Protector/dp/B003E8LBVM/re f=cmcr_pr_pbt
Anyone ever used this?http://www.amazon.com/Premium-Crystal-Silicone-Precut-Protector/dp/B003E8LBVM/re f=cmcr_pr_pbt
Anyone ever used this?
Maybe you are looking for
-
Family Sharing won't work because I have two separate accounts for iCloud and iTunes
I have two Apple accounts, one that is connected to my iTunes Store purchases, and another for iCloud. I had to do this for reasons related to transitioning from the old MobileMe service to iCloud a few years ago. So now with Family Sharing, if I use
-
Can't remove apple mobile device support. need to for update?
Every time I plug in my iPhone (3GS or my wife's 4) or my iPad2 I get a message telling me to update Apple mobile devise support and to do so I need to uninstall it and iTunes and reinstall. Windows won't uninstall AMDS. (windows vista) It will unins
-
Custom tabular form for multi-row not saving data
Ok, before anyone asks, yes, I did read the how-to:-) I have a custom tabular form, which I did cause I need to use popups and the popups that you can use in the wizard tabular form does not display the text but rather the value underneath it. It ret
-
Can we use shared variable in main report's crosstab
Post Author: sangi CA Forum: General Hi, I have a main report with subreport (in Group footer), crosstab (in Group header). For cross tab calculation, I need a value from subreport to be passed to main report's crosstab. I could pass the value using
-
Easy question about capturing audio
Forgive me if this sounds noobish.... I would just like to know what kind of audio file Soundtrack Pro WRITES, not what kind of files it can export to. I'm just trying to save a step and eliminate the exporting time. Thanks!