Puzzle why query returned wrong value for last record in update.
Hi all,
10.2.0.4, Windows 32 bit.
Apply 15% dis.count to related 5 items ( total amount 522 ) sorted by lowest amount first (amount = 1).
Last record ( amount = 200 ) will be the total dis.count amount ( 78.3 ) less applied accumulated dis.count amount ( 48.50 ).
Query runs fine without update clause but wrong result for last record with update.
CREATE TABLE "T1"
"ID" NUMBER NOT NULL ENABLE,
"ITEM_ID" VARCHAR2(20 BYTE) NOT NULL ENABLE,
"AMOUNT" NUMBER(10,2) NOT NULL ENABLE,
"dizcount" NUMBER(10,2)
INSERT INTO T1 ( ID, ITEM_ID, AMOUNT, dizcount ) VALUES ( 65, '101', 1, NULL ) ;
INSERT INTO T1 ( ID, ITEM_ID, AMOUNT, dizcount ) VALUES ( 65, '102', 1, NULL ) ;
INSERT INTO T1 ( ID, ITEM_ID, AMOUNT, dizcount ) VALUES ( 65, '201', 200, NULL ) ;
INSERT INTO T1 ( ID, ITEM_ID, AMOUNT, dizcount ) VALUES ( 65, '215', 155, NULL ) ;
INSERT INTO T1 ( ID, ITEM_ID, AMOUNT, dizcount ) VALUES ( 65, '111', 165, NULL ) ;
UPDATE t1 a
SET a.dizcount =
(SELECT
CASE
WHEN rec_count = row_count
THEN (78.3 - NVL(lag(temp_total,1) over ( order by rec_count) ,0))-- 78.3 is total dizcount amount from 522 * .15
ELSE disc_amt
END amt
FROM
(SELECT id,
item_id,
disc_amt,
rec_count,
row_count,
CASE
WHEN rec_count != row_count -- accumulate dizcount amount except for last record
THEN SUM(disc_amt) over (order by rec_count)
ELSE 0
END temp_total
FROM
(SELECT ID ,
item_id,
amount amt,
ROUND(amount * .15,1) disc_amt, -- dizcount is 15%
row_number () over (order by amount) rec_count,
COUNT ( *) over () row_count
FROM t1
WHERE ID = 65
GROUP BY id,
item_id,
disc_amt,
rec_count,
row_count
)b
WHERE a.item_id = b.item_id
);Regards
Zack
Edited by: Zack.L on Jul 26, 2010 1:26 AM
Zack.L wrote:
Query runs fine without update clause but wrong result for last record with update.Not sure why but looks like another case in favour of MERGE.
MERGE INTO T1
using (SELECT id, item_id,
CASE
WHEN rec_count = row_count
THEN (78.3 - NVL(lag(temp_total,1) over ( order by rec_count) ,0))-- 78.3 is total dizcount amount from 522 * .15
ELSE disc_amt
END amt
FROM
(SELECT id,
item_id,
disc_amt,
rec_count,
row_count,
CASE
WHEN rec_count != row_count -- accumulate dizcount amount except for last record
THEN SUM(disc_amt) over (order by rec_count)
ELSE 0
END temp_total
FROM
(SELECT ID ,
item_id,
amount amt,
ROUND(amount * .15,1) disc_amt, -- dizcount is 15%
row_number () over (order by amount) rec_count,
COUNT ( *) over () row_count
FROM t1
WHERE ID = 65
GROUP BY id,
item_id,
disc_amt,
rec_count,
row_count
))b
on (t1.id = b.id and t1.item_id = b.item_id)
when matched then update set dizcount = b.amt ;This worked for me. I tested on 11.2 but should work on 10.2.0.4
SQL> select * from t1 order by amount ;
ID ITEM_ID AMOUNT DIZCOUNT
65 101 1 .2
65 102 1 .2
65 215 155 23.3
65 111 165 24.8
65 201 200 29.8p.s. BTW, not sure if you want the column names in different cases, but your script, as it is, gave me an error (on 11.2)
Similar Messages
-
Need PL/SQL Command for to check all rows value for child record and update
Hi All,
i want to update one field following by
one to many relationship for example
in child applet status field is value is "Closed" for all child record then parent value also should update to closed
Note: if one child record field status is "Open" don't do the update operationYou can do it in single UPDATE operation.
Here is sample & Result:
create table PA (id varchar2(3), name varchar2(12), STATUS varchar2(12));
insert into pa values('001','Cary','Open');
insert into pa values('002','TOM','Open');
create table boy (par_id varchar2(3), id varchar2(4), name varchar2(12), status varchar2(12));
insert into boy values('001','ABC1','Cary','Open');
insert into boy values('001','ABC2','Mac','Closed');
insert into boy values('001','ABC3','Ray','Closed');
insert into boy values('001','ABC4','NALLY','Open');
insert into boy values('002','ABC5','ME','Closed');
insert into boy values('002','ABC6','SHE','Closed');
UPDATE PA
SET STATUS='Closed'
WHERE NOT EXISTS
(SELECT 1
FROM BOY
WHERE BOY.PAR_ID=PA.id
GROUP BY BOY.PAR_ID,
BOY.STATUS
HAVING SUM(DECODE(BOY.STATUS,'Open',1,'Closed',0,0))>0
select * from pa;
001 Cary Open
002 TOM Closed -
Hi how will get subquery returns multiple values for main query
Hi all ;
here i given one sql query
1)select decode(a.FLG,'Y','yes','N','no','null')||'] '||a.p_type||' : '|| initcap(replace(substr(b.mgr,0,instr(b.mgr,'@')-1),'.',' '))||' - '||
b.name||' ('|| substr(a.name,0,instr(a.name,'-')-1)||')'
from table1 a
join table3 c on c.emptype = a.emptype
left outer join table2 b on a.name = b.name
where a.mgrid = 100;
if i run this above query returning multiple values depend on sa.mgr values.
like output coming like this
yes:2000-anbarasan
yes:2700-anb
yes:2000-rasan
yes:2807-anbarasan
yes:2700-anbanu
yes:2000-null
2) this sub query i am passing with main query
select sa.mgrid,sa.sal,(select decode(a.FLG,'Y','yes','N','no','null')||'] '||a.p_type||' : '||
initcap(replace(substr(b.mgr,0,instr(b.mgr,'@')-1),'.',' '))||' - '||
b .name||' ('|| substr(a.name,0,instr(a.name,'-')-1)||')'
from table1 a
join table3 c on c.emptype = a.emptype
left outer join table2 b on a.name = b.name
where a.mgrid = 100)" test " from table4 sa,table5 te ,table6 ft where sa.id(+)=te.id and sa.mgr=ft.mgr;
my final out put required like this:
mgrid sal test
100 20000 yes:2000-anbarasan
yes:2700-anb
yes:2000-rasan
yes:2807-anbarasan
yes:2700-anbanu
yes:2000-null
but i am getting erro:
1)missing paranths
2)single row subquery return more then one row.
hi kindly give me answer to me as soon as possible
Edited by: anbarasan on Sep 29, 2008 9:48 PMI refuse to read all of that code and guess what error message you are getting. Apparently others feel the same way.
Run the final SQL statement and then cut and paste the code and full error statement into a post.
Also include your full version number to three decimal places.
My refusal is not an unwillingness to help you but rather an unwillingness to spend 10 minutes reconstructing what you could have pasted in in a fraction of a second. We are all volunteers here and there are many people that need help. I hope you understand. -
SCCM 2012 Reporting Code Returns Same Value For Total Number Of Required Updates Per Computer
I'm trying to make a custom report in SCCM 2012 R2 with SQL 2012 since Microsoft took out the ability to list the number of updates needed per computer. This was in WSUS reporting but is not in SCCM reporting. I've made a custom report for this but can't
quite get it to work. The report runs but the same value for total number of updates needed shows up for every computer. I took a query from one report and am trying to get it to run inside the select statement from another report. Here is the code as it is
right now:
declare @CI_ID int; select @CI_ID=CI_ID from fn_rbac_ConfigurationItems(@UserSIDs) where CIType_ID=9 and CI_UniqueID=@AuthListID
declare @StateID int
select @StateID=StateID from fn_rbac_StateNames(@UserSIDs) sn where sn.StateName=@StateName and TopicType=300
declare @RequiredUpdateCount int
select @RequiredUpdateCount=Count(v_StateNames.Statename) from
v_StateNames,
v_Update_ComplianceStatusAll
Inner Join v_R_System On (v_R_System.ResourceID = v_Update_ComplianceStatusAll.ResourceID)
Inner Join v_UpdateInfo On (v_UpdateInfo.CI_ID = v_Update_ComplianceStatusAll.CI_ID)
where
v_StateNames.TopicType = 500 and
v_StateNames.StateID = v_Update_ComplianceStatusAll.Status and
v_StateNames.Statename = 'Update is required'
Group By v_R_System.Name0
select
ccm.ResourceID,
rs.Name0+isnull('.'+rs.Resource_Domain_or_Workgr0, '') as MachineName,
rs.User_Domain0+'\'+User_Name0 as LastLoggedOnUser,
asite.SMS_Assigned_Sites0 as AssignedSite,
rs.Client_Version0 as ClientVersion,
@RequiredUpdateCount as RequiredUpdates
from fn_rbac_ClientCollectionMembers(@UserSIDs) ccm
join fn_rbac_Update_ComplianceStatusAll(@UserSIDs) cs on cs.CI_ID=@CI_ID and cs.ResourceID=ccm.ResourceID
and (@StateID=0 and cs.Status=0 or @StateID=1 and cs.Status in (1,3) or @StateID=2 and cs.Status=2)
join fn_rbac_R_System(@UserSIDs) rs on rs.ResourceID = ccm.ResourceID
left join fn_rbac_RA_System_SMSAssignedSites(@UserSIDs) asite on asite.ResourceID = ccm.ResourceID
where ccm.CollectionID=@CollID
order by MachineName
Ben JohnsonWYThere's plenty wrong with it. It gives you no idea of how many patches each box needs. Then you have to click on each computer, click the sort arrow by the "required" column, and count the number needed. When you have hundreds of computers to work on this
is a big deal as it's very time consuming. What's great about the view in WSUS that had this is that it listed this for you and you could sort the required column. So if have most computers needing 2 patches, you can go find the one that needs 40 and 150 (to
over exaggerate) and put the time on them needed to see why they're so far behind. The WSUS format was quick, easy, and informative. SCCM makes getting this info a royal PITA which is why I'm (and many others) so royally peeved at MicroShaft for removing this
functionality, but that's what we've all come to expect from MicroShaft--just like when then took the nice colorful themes out of Office 2010 and replaced them in Office 2013 with just white, gray, and a darker gray. That's super boring and actually hurts
my eyes.
Ben JohnsonWY -
Hi,
I am developing a program the will check for disk space (used,blocks, available ...) and i am using the statvfs.h file.
When tested with small capacity disks (~5G) it works fine (compared to df -k).
When tested with large capacity disks (~400G) it returns wrong values(compared to df -k).
I am using f_bavail and i am casting from fsblkcnt_t to integer/long.
Please help.
Thanx R.Thanks for your answer.
I have discovered that it (statvfs.h) doe's not work with vxfs, only with ufs.
I am using Veritas Cluster Server.
Any chance of an answer ??
thanks,
R. -
CALCULATE_TAX_ITEM gives wrong values for Scess and HScess in PO Print
Dear Friends,
I am working with PO Print in smartforms hare the Fm CALCULATE_TAX_ITEM is gives wrong values for Scess and HEcess if I put the Gate pass (Basic Excise Duty) Manually.
And one more Issue is as if I check any line item condition taxes than imediatly when I see the print the all line items Scee and HEcess displays same which I have saw.
If there is a single line item in PO than there is no issue any way.
kindly suggest to resolve the issue.
Regards,
D Tarun KumarHi,
I had the same issue, that taxes on invoice tab of PO was not printed correctly on PO form by calling CALCULATE_TAX_ITEM.
If you want to have the same tax value as komp-mwsbp, that use following form routine call before FB CALCULATE_TAX_ITEM.
perform j_1b_save_tax_fields(saplmepo) using ekko ekpo lfa1.
This is used in transaction me23n also.
Kind regards,
Tülay -
On Firefox stage.stageWidth stage.stageHeight return wrong values
Hello,
I have a problem on firefox windows 8, stage.stageWidth and stage.stageHeight return wrong values,
swfobject.embedSWF("mySwf.swf", "mySwf", "500", "500", "14.0.0","expressInstall.swf", flashvars, params, attributes);
on ie, Chrome stage.stageWidth and stage.stageHeight return 500
on iFirefox stage.stageWidth and stage.stageHeight return 750 and my animation is smaller (66%)
ThanksIn order to target iPhone 5 you need to use AIR 3.5 beta or AIR 3.4
pointing to iOS 6 SDK. Be sure to include the [email protected] to
trigger the iPhone 5 size. In other words, the app has to be built
targeting the iOS 6 SDK and have the new default png to trigger the full
size on the iPhone 5.
AIR 3.5 beta includes the bits that to target iOS 6 SDK, but you can
target iOS 6 with AIR 3.4 by using the external SDK path in the package
ANE prompt in FB 4.6
http://labs.adobe.com
iBrent -
Single query return multiple value
Hi ALL,
I have a sql query as below :
select order_number,
(select decode(hcp.contact_point_purpose,'ABC',hcp.email_address,'CDE',hcp.email_address,null)
from hz_contact_points,
hz_parties hz
WHERE hz.party_id=hcp.owner_table_id) Email
FROM oe_order_headers_all h
WHERE h.order_number='102'
Actually the problem i am facing is the inner select query is returning multiple row , so my main query is erroring out, i need to capture the multiple row.
in the above example the inner decode statement returning two mail address, i need to capture that, but while executing the whole query it is erroring out as saying single query returns multiple values.
please help me on this to capture multiple values
Thanks>
select order_number,
(select decode(hcp.contact_point_purpose,'ABC',hcp.email_address,'CDE',hcp.email_address,null)
from hz_contact_points,
hz_parties hz
WHERE hz.party_id=hcp.owner_table_id
/* a join is missing here that points to table oe_order_headers_all h*/) Email
FROM oe_order_headers_all h
WHERE h.order_number='102'
>
I can see a join missing in your select sub query.
However, if you you are still getting the single query return multiple value error then you need to replace the sql sub query
select decode(hcp.contact_point_purpose,'ABC',hcp.email_address,'CDE',hcp.email_address,null)
from hz_contact_points,
hz_parties hz
WHERE hz.party_id=hcp.owner_table_id)by decode(hcp.contact_point_purpose,'ABC',hcp.email_address,'CDE',hcp.email_address,null)
and join the two tables in you main query..
Regards
Biju
ED: Provide test script and your expected output to get what you want exacly!
Edited by: biju2012 on Sep 7, 2012 12:06 AM -
When orientation change and soft keyboard is activated, return wrong value
Hello,
in a View, when the orientation change and the soft keyboard is activated, this.navigator.height return wrong value.
systemManager.stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, orientationChangeHandler);
public function orientationChangeHandler(event:StageOrientationEvent):void {
inp.text=String(this.navigator.height);
thanks.Can you attach a simple sample application that demonstrates this? What device are you seeing this issue on?
-
How to show multiple values for Unique records in Report
Here's my question/problem:
I've joined two tables, one table (TBL1) contains an object id (OBJ_ID) that repeats and the other table (TBL2) contains a date (DT), object type id (OBJ_TYP_ID), and object type description (OBJ_TYP_DES). The tables are joined by an inventory id (INV_ID).
The OBJ_ID repeats and has a Date value for each record. I want to report an unique OBJ_ID and show each Date for a particular OBJ_ID in multiple Columns.
An example of the current resultset looks like this:
OBJ_ID OBJ_TYP_ID OBJ_TYP_DES DATE
1 1 TYPE1 4/1/2009
2 1 TYPE1 4/1/2009
3 1 TYPE1 4/10/2009
1 2 TYPE2 5/3/2009
3 1 TYPE1 3/30/2005
4 1 TYPE1 4/1/2009
5 1 TYPE1 4/1/2009
5 2 TYPE2 5/1/2009
1 1 TYPE1 4/3/2007
1 1 TYPE1 3/30/2005
I want to express the resultset like this:
OBJ_ID OBJ_TYP_ID OBJ_TYPE_DES DATE1 DATE2 DATE3
1 1 TYPE1 4/1/2009 4/3/2007 3/30/2005
1 2 TYPE2 5/3/2009
2 1 TYPE1 4/1/2009
3 1 TYPE1 4/10/2009 3/30/2005
4 1 TYPE1 4/1/2009
5 1 TYPE1 4/1/2009
5 2 TYPE2 5/1/2009
What technique is best to use to do this? I know I could create another table and populate the rows/columns by reading data from this query, but is there a better way?Hi,
cclemmons wrote:
I want to express the resultset like this:
OBJ_ID OBJ_TYP_ID OBJ_TYPE_DES DATE1 DATE2 DATE3
1 1 TYPE1 4/1/2009 4/3/2007 3/30/2005
1 2 TYPE2 5/3/2009
2 1 TYPE1 4/1/2009
3 1 TYPE1 4/10/2009 3/30/2005
4 1 TYPE1 4/1/2009
5 1 TYPE1 4/1/2009
5 2 TYPE2 5/1/2009
What technique is best to use to do this? I know I could create another table and populate the rows/columns by reading data from this query, but is there a better way?Absolutely! You seem to have an instictive feeling that creating a separate table just for a query is inefficient. You instinct is 100% correct. Maybe in Oracle 7 there was a reason to do that, but today you can query results of other queries as if they were tables, so temporary tables like you describe are very rarely necessary, let alone convenient.
What you want to do is pivot the date columns. Here's one way
WITH original_query AS
SELECT obj_id
, obj_typ_id
, obj_typ_des
, dt -- date is not a good column name
FROM ... -- the rest of your original query goes here
, got_rnum AS
SELECT oq.*
, ROW_NUMBER () OVER ( PARTITION BY obj_id
, obj_typ_id
, obj_typ_des
ORDER BY dt DESC
) AS rnum
FROM original_query oq
SELECT obj_id
, obj_typ_id
, obj_typ_des
, MAX (CASE WHEN rnum = 1 THEN dt END) AS dt1
, MAX (CASE WHEN rnum = 2 THEN dt END) AS dt2
, MAX (CASE WHEN rnum = 3 THEN dt END) AS dt3
, MAX (CASE WHEN rnum = 4 THEN dt END) AS dt4
, MAX (CASE WHEN rnum = 5 THEN dt END) AS dt5
FROM got_rnum
GROUP BY obj_id
, obj_typ_id
, obj_typ_des
;As you can see, this adds two layers of queries on top of your original query. One of those layers is probably not needed; depending on what you're doing in your original main query, you can probably compute rnum there, and omit the got_rnum sub-query.
Also, depending on the relationship of obj_id, obj_typ_id and obj_typ_des, some of what I posted above may not be needed but including it won't really hurt.
If you want to know more about this technique, search for "pivot" or "rows to columns". A <tt>SELECT ... PIVOT ...</tt> keyword was introduced in Oracle 11, but most of what you'll find when you search for "pivot" doesn't assume you have Oracle 11 (nor does the query above require Oracle 11).
This assumes you know an upper limit (5 in the example above) of dts that can appear in any line of output.
See [this thread|http://forums.oracle.com/forums/thread.jspa?messageID=3527823�] for a discussion of some alternatives. -
How to have a unique value for each record??
could any 1 help me out in this...
I want to have a column name 'Order No' which should be unique.
How to generate a unique value for each record.??could any 1 help me out in this...
I want to have a column name 'Order No' which should be unique.
How to generate a unique value for each record.?? If you are using SQL PLUS to create the table try something like
this:
CREATE TABLE ORDER_TEST (
ORD_NO NUMBER (8) NOT NULL PRIMARY KEY,
ORDERDATE DATE,
CUSTID NUMBER (8) NOT NULL,
SHIPDATE DATE,
TOTAL NUMBER (8,2) CONSTRAINT TOTAL_ZERO CHECK
(TOTAL >= 0),
CONSTRAINT ORD_FOREIGN_KEY FOREIGN KEY (CUSTID) REFERENCES
CUSTOMER (CUSTID),
CONSTRAINT ORD_UNIQUE UNIQUE (ORD_NO)
-- or a simpler table example
DROP TABLE ORDER_TEST;
CREATE TABLE ORDER_TEST (
ORD_NO NUMBER (8),
ORDERDATE DATE,
CUSTID NUMBER (8) NOT NULL,
SHIPDATE DATE,
TOTAL NUMBER (8,2) CONSTRAINT TOTAL_ZERO CHECK
(TOTAL >= 0),
CONSTRAINT ORD_UNIQUE UNIQUE (ORD_NO)
note: ORD_NO can also be a primary key
If you are doing the INSERT during runtime from a form first
create a sequence in SQL PLUS to handle the ORD_NO value:
Create SEQUENCE ORDERNO_UNIQUEVAL_sqnc
START WITH 000001
NOMAXVALUE
NOCACHE;
and reference it as the ORD_NO parameter in your INSERT
statement:
ORDERNO_UNIQUEVAL_sqnc.NEXTVAL
note: to maintain data integrity you must use the sequence
everytime you insert a new order to table. To start a new
sequence drop the sequence and re-create it with whatever "START
WITH" value you want.
Hope this helps
Kevin -
Hi,
for example, in student table i am having 1000 columns, column names like(id ,name,class, dept,etc,.).
i want to insert 998 fields to department table from student tables except(id,class).
i don't want to mention all column names in the insert command,
is there any possibilities to filter the column names in insert command like (EXCEPT, NOT IN).
Thanks in advance..duplicate of
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/b31fa034-5b8f-42e4-b4e1-592a632ca6a5/inserting-values-for-all-records-except-1-or-2-column-without-specify-column-names?forum=sqlce
please dont cross post
Please Mark This As Answer if it solved your issue
Please Vote This As Helpful if it helps to solve your issue
Visakh
My Wiki User Page
My MSDN Page
My Personal Blog
My Facebook Page -
Why Doesn't Query Return Date Values On Eval Table?
Using Oracle 11.2.0.1 with XMLType Secure File Table named Eval.
An interesting situation is occurring when attempting to query. A couple of things are going on.
These queries do not have registered schemas.
1. This query works fine
SELECT xmlcast(xmlquery('declare default element namespace "http://www.cigna.com/acme/domains/eval/2010/03";
declare namespace ns7="http://www.cigna.com/acme/domains/derived/fact/2010/03";
$p/eval/derivedFacts/ns7:derivedFact/ns7:defId' passing e.object_value AS "p" RETURNING CONTENT)
AS varchar2(100)) "Definition ID"
FROM eval e;When adding a condition in the query to get defId=52657, get all nulls - even though this record exists - see sample data below.
SELECT xmlcast(xmlquery('declare default element namespace "http://www.cigna.com/acme/domains/eval/2010/03";
declare namespace ns7="http://www.cigna.com/acme/domains/derived/fact/2010/03";
$p/eval/derivedFacts/ns7:derivedFact[/ns7:defId=888]/ns7:defId' passing e.object_value AS "p" RETURNING CONTENT)
AS varchar2(100)) "Definition ID"
FROM eval e;
<?xml version = '1.0' encoding = 'UTF-8' standalone = 'yes'?><eval createdById="1957" acmeMemberId="3df55bd8-b3a6-4ba3-85e7-e8a188b7b4ed" category="external" eval_dt="2012-02-11T23:45:10.266Z" evalId="876d4035-aaf9-4f09-ae40-43498ec4973b" xmlns="http://www.cigna.com/acme/domains/eval/2010/03" xmlns:ns2="http://www.cigna.com/acme/domains/derived/fact/2010/03" xmlns:ns3="http://www.cigna.com/acme/domains/common/2010/03">
<derivedFacts>
<ns2:derivedFact>
<ns2:defId>52657</ns2:defId>
<ns2:defUrn>urn:coderunner:Medical:Definition:DerivedFact:52657:1</ns2:defUrn>
<ns2:factSource>CCDR Member</ns2:factSource>
<ns2:origInferred_dt>2012-02-11T23:45:10.266Z</ns2:origInferred_dt>
<ns2:factValue>
<ns2:type>boolean</ns2:type>
<ns2:value>true</ns2:value>
</ns2:factValue>
</ns2:derivedFact>
<ns2:derivedFact>
<ns2:defId>52600</ns2:defId>
<ns2:defUrn>urn:coderunner:Medical:Definition:DerivedFact:52600:2</ns2:defUrn>
<ns2:factSource>CCDR Member</ns2:factSource>
<ns2:origInferred_dt>2012-02-11T23:45:10.266Z</ns2:origInferred_dt>
<ns2:factValue>
<ns2:type>string</ns2:type>
<ns2:value>null</ns2:value>
</ns2:factValue>
</ns2:derivedFact>
<ns2:derivedFact>
<ns2:defId>52599</ns2:defId>
<ns2:defUrn>urn:coderunner:Medical:Definition:DerivedFact:52599:1</ns2:defUrn>
<ns2:factSource>CCDR Member</ns2:factSource>
<ns2:origInferred_dt>2012-02-11T23:45:10.266Z</ns2:origInferred_dt>
<ns2:factValue>
<ns2:type>string</ns2:type>
<ns2:value>INT</ns2:value>
</ns2:factValue>
</ns2:derivedFact>
<ns2:derivedFact>
<ns2:defId>51400</ns2:defId>
<ns2:defUrn>urn:coderunner:Medical:Definition:DerivedFact:51400:1</ns2:defUrn>
<ns2:factSource>CCDR Member</ns2:factSource>
<ns2:origInferred_dt>2012-02-11T23:45:10.266Z</ns2:origInferred_dt>
<ns2:factValue>
<ns2:type>integer</ns2:type>
<ns2:value>34</ns2:value>
</ns2:factValue>
</ns2:derivedFact>
<ns2:derivedFact>
<ns2:defId>52177</ns2:defId>
<ns2:defUrn>urn:coderunner:Medical:Definition:DerivedFact:52177:3</ns2:defUrn>
<ns2:factSource>CCDR Member</ns2:factSource>
<ns2:origInferred_dt>2012-02-11T23:45:10.266Z</ns2:origInferred_dt>
<ns2:factValue>
<ns2:type>string</ns2:type>
<ns2:value>null</ns2:value>
</ns2:factValue>
</ns2:derivedFact>
<ns2:derivedFact>
<ns2:defId>52075</ns2:defId>
<ns2:defUrn>urn:coderunner:Medical:Definition:DerivedFact:52075:1</ns2:defUrn>
<ns2:factSource>CCDR Member</ns2:factSource>
<ns2:origInferred_dt>2012-02-11T23:45:10.266Z</ns2:origInferred_dt>
<ns2:factValue>
<ns2:type>string</ns2:type>
<ns2:value>M</ns2:value>
</ns2:factValue>
</ns2:derivedFact>
<ns2:derivedFact>
<ns2:defId>51391</ns2:defId>
<ns2:defUrn>urn:coderunner:Medical:Definition:DerivedFact:51391:1</ns2:defUrn>
<ns2:factSource>CCDR Member</ns2:factSource>
<ns2:origInferred_dt>2012-02-11T23:45:10.266Z</ns2:origInferred_dt>
<ns2:factValue>
<ns2:type>boolean</ns2:type>
<ns2:value>true</ns2:value>
</ns2:factValue>
</ns2:derivedFact>
<ns2:derivedFact>
<ns2:defId>51473</ns2:defId>
<ns2:defUrn>urn:coderunner:Medical:Definition:DerivedFact:51473:1</ns2:defUrn>
<ns2:factSource>CCDR Product</ns2:factSource>
<ns2:origInferred_dt>2012-02-11T23:45:10.266Z</ns2:origInferred_dt>
<ns2:factValue>
<ns2:type>date</ns2:type>
<ns2:value>2011-01-01</ns2:value>
</ns2:factValue>
</ns2:derivedFact>
<ns2:derivedFact>
<ns2:defId>51474</ns2:defId>
<ns2:defUrn>urn:coderunner:Medical:Definition:DerivedFact:51474:1</ns2:defUrn>
<ns2:factSource>CCDR Product</ns2:factSource>
<ns2:origInferred_dt>2012-02-11T23:45:10.266Z</ns2:origInferred_dt>
<ns2:factValue>
<ns2:type>date</ns2:type>
<ns2:value>9999-12-31</ns2:value>
</ns2:factValue>
</ns2:derivedFact>
<ns2:derivedFact>
<ns2:defId>52151</ns2:defId>
<ns2:defUrn>urn:coderunner:Medical:Definition:DerivedFact:52151:3</ns2:defUrn>
<ns2:factSource>CCDR Product</ns2:factSource>
<ns2:origInferred_dt>2012-02-11T23:45:10.266Z</ns2:origInferred_dt>
<ns2:factValue>
<ns2:type>boolean</ns2:type>
<ns2:value>true</ns2:value>
</ns2:factValue>
</ns2:derivedFact>
<ns2:derivedFact>
<ns2:defId>51048</ns2:defId>
<ns2:defUrn>urn:coderunner:Medical:Definition:DerivedFact:51048:5</ns2:defUrn>
<ns2:factSource>CCDR ProfileFact</ns2:factSource>
<ns2:origInferred_dt>2012-02-11T23:45:10.266Z</ns2:origInferred_dt>
<ns2:factValue>
<ns2:type>boolean</ns2:type>
<ns2:value>true</ns2:value>
</ns2:factValue>
</ns2:derivedFact>
<ns2:derivedFact>
<ns2:defId>60380</ns2:defId>
<ns2:defUrn>urn:coderunner:Medical:Definition:DerivedFact:60380:1</ns2:defUrn>
<ns2:factSource>CCDR ProfileFact</ns2:factSource>
<ns2:origInferred_dt>2012-02-11T23:45:10.266Z</ns2:origInferred_dt>
<ns2:factValue>
<ns2:type>boolean</ns2:type>
<ns2:value>true</ns2:value>
</ns2:factValue>
</ns2:derivedFact>
</derivedFacts>
</eval>Seem to be missing something conceptually, as to why this is not working.
2. When replacing defId with origInferred_dt and adjust for the datatype; the query returns all nulls
SELECT xmlcast(xmlquery('declare default element namespace "http://www.cigna.com/acme/domains/eval/2010/03";
declare namespace ns7="http://www.cigna.com/acme/domains/derived/fact/2010/03";
$p/eval/derivedFacts/ns7:derivedFact/ns7:origInferred_dt' passing e.object_value AS "p" RETURNING CONTENT)
AS TIMESTAMP WITH TIME ZONE) "Original Inferred Date"
FROM croutreach.eval e;Same here, seem to be missing something conceptually...
Ultimately hoping to get this query to correctly work:
SELECT xmlcast(xmlquery('declare default element namespace "http://www.cigna.com/acme/domains/eval/2010/03";
declare namespace ns7="http://www.cigna.com/acme/domains/derived/fact/2010/03";
$p/eval/derivedFacts/ns7:derivedFact[/ns7:defId=52657]/ns7:origInferred_dt' passing e.object_value AS "p" RETURNING CONTENT)
AS TIMESTAMP WITH TIME ZONE) "Original Inferred Date"
FROM croutreach.eval e;Any assistance would be much appreciated to say the least! :)
Regards,
Rick BlanchardHi Rick,
Ultimately hoping to get this query to correctly work:
SELECT xmlcast(xmlquery('declare default element namespace "http://www.cigna.com/acme/domains/eval/2010/03";
declare namespace ns7="http://www.cigna.com/acme/domains/derived/fact/2010/03";
$p/eval/derivedFacts/ns7:derivedFact[/ns7:defId=52657]/ns7:origInferred_dt' passing e.object_value AS "p" RETURNING CONTENT)
AS TIMESTAMP WITH TIME ZONE) "Original Inferred Date"
FROM croutreach.eval e;
Remove the initial slash in the predicate [ns7:defId=...] :
xmlcast(
xmlquery(
'declare default element namespace "http://www.cigna.com/acme/domains/eval/2010/03"; (::)
declare namespace ns7="http://www.cigna.com/acme/domains/derived/fact/2010/03"; (::)
$p/eval/derivedFacts/ns7:derivedFact[ns7:defId=52657]/ns7:origInferred_dt'
passing e.object_value AS "p"
RETURNING CONTENT
AS TIMESTAMP WITH TIME ZONE
) "Original Inferred Date" -
Java returning incorrect values for width and height of a Tiff image
I have some TIFF images (sorry, I cannot post them b/c of there confidential nature) that are returning the incorrect values for the width and height. I am using Image.getWidth(null) and have tried the relevant methods from BufferedImage. When I open the same files in external viewers (Irfanview, MS Office Document Imaging) they look fine and report the "correct" dimensions. When I re-save the files, my code works fine. Obviously, there is something wrong with the files, but why would the Java code fail and not the external viewers? Is there some way I can detect file problems?
Here is the code, the relevant section is in the print() routine.
* ImagePrinter.java
* Created on Feb 27, 2008
* Created by tso1207
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.print.PageFormat;
import java.awt.print.PrinterException;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.FileImageInputStream;
import javax.imageio.stream.ImageInputStream;
import com.shelter.io.FileTypeIdentifier;
public class ImagePrinter extends FilePrintable
private final ImageReader _reader;
private final int _pageCount;
private final boolean _isTiff;
//for speed we will hold current page info in memory
private Image _image = null;
private int _imgWidth = 0;
private int _imgHeight = 0;
private int _currentPage = -1;
public ImagePrinter(File imageFile) throws IOException
super(imageFile);
ImageInputStream fis = new FileImageInputStream(getFile());
Iterator readerIter = ImageIO.getImageReaders(fis);
ImageReader reader = null;
while (readerIter.hasNext())
reader = (ImageReader) readerIter.next();
reader.setInput(fis);
_reader = reader;
int pageCount = 1;
String mimeType = FileTypeIdentifier.getMimeType(imageFile, true);
if (mimeType.equalsIgnoreCase("image/tiff"))
_isTiff = true;
pageCount = reader.getNumImages(true);
else
_isTiff = false;
_pageCount = pageCount;
public int print(java.awt.Graphics g, java.awt.print.PageFormat pf, int pageIndex)
throws java.awt.print.PrinterException
int drawX = 0, drawY = 0;
double scaleRatio = 1;
if (getCurrentPage() != (pageIndex - getPageOffset()))
try
setCurrentPage(pageIndex - getPageOffset());
setImage(_reader.read(getCurrentPage()));
setImgWidth(getImage().getWidth(null));
setImgHeight(getImage().getHeight(null));
catch (IndexOutOfBoundsException e)
return NO_SUCH_PAGE;
catch (IOException e)
throw new PrinterException(e.getLocalizedMessage());
if (!_isTiff && getImgWidth() > getImgHeight())
pf.setOrientation(PageFormat.LANDSCAPE);
else
pf.setOrientation(PageFormat.PORTRAIT);
Graphics2D g2 = (Graphics2D) g;
g2.translate(pf.getImageableX(), pf.getImageableY());
g2.setClip(0, 0, (int) pf.getImageableWidth(), (int) pf.getImageableHeight());
scaleRatio =
(double) ((getImgWidth() > getImgHeight())
? (pf.getImageableWidth() / getImgWidth())
: (pf.getImageableHeight() / getImgHeight()));
//check the scale ratio to make sure that we will not write something off the page
if ((getImgWidth() * scaleRatio) > pf.getImageableWidth())
scaleRatio = (pf.getImageableWidth() / getImgWidth());
else if ((getImgHeight() * scaleRatio) > pf.getImageableHeight())
scaleRatio = (pf.getImageableHeight() / getImgHeight());
int drawWidth = getImgWidth();
int drawHeight = getImgHeight();
//center image
if (scaleRatio < 1)
drawX = (int) ((pf.getImageableWidth() - (getImgWidth() * scaleRatio)) / 2);
drawY = (int) ((pf.getImageableHeight() - (getImgHeight() * scaleRatio)) / 2);
drawWidth = (int) (getImgWidth() * scaleRatio);
drawHeight = (int) (getImgHeight() * scaleRatio);
else
drawX = (int) (pf.getImageableWidth() - getImgWidth()) / 2;
drawY = (int) (pf.getImageableHeight() - getImgHeight()) / 2;
g2.drawImage(getImage(), drawX, drawY, drawWidth, drawHeight, null);
g2.dispose();
return PAGE_EXISTS;
* <br><br>
* Created By: TSO1207 - John Loyd
* @since version XXX
* @return
public int getPageCount()
return _pageCount;
public void destroy()
setImage(null);
try
_reader.reset();
_reader.dispose();
catch (Exception e)
System.gc();
* <br><br>
* Created By: TSO1207 - John Loyd
* @since Mar 25, 2008
* @return
public Image getImage()
return _image;
* <br><br>
* Created By: TSO1207 - John Loyd
* @since Mar 25, 2008
* @return
public int getImgHeight()
return _imgHeight;
* <br><br>
* Created By: TSO1207 - John Loyd
* @since Mar 25, 2008
* @return
public int getImgWidth()
return _imgWidth;
* <br><br>
* Created By: TSO1207 - John Loyd
* @since Mar 25, 2008
* @param image
public void setImage(Image image)
_image = image;
* <br><br>
* Created By: TSO1207 - John Loyd
* @since Mar 25, 2008
* @param i
public void setImgHeight(int i)
_imgHeight = i;
* <br><br>
* Created By: TSO1207 - John Loyd
* @since Mar 25, 2008
* @param i
public void setImgWidth(int i)
_imgWidth = i;
* <br><br>
* Created By: TSO1207 - John Loyd
* @since Mar 25, 2008
* @return
public int getCurrentPage()
return _currentPage;
* <br><br>
* Created By: TSO1207 - John Loyd
* @since Mar 25, 2008
* @param i
public void setCurrentPage(int i)
_currentPage = i;
}Edited by: jloyd01 on Jul 3, 2008 8:26 AMFigured it out. The files have a different vertical and horizontal resolutions. In this case the horizontal resolution is 200 DPI and the vertical is 100 DPI. The imgage width and height values are based on those resolution values. I wrote a section of code to take care of the problem (at least for TIFF 6.0)
private void setPageSize(int pageNum) throws IOException
IIOMetadata imageMetadata = _reader.getImageMetadata(pageNum);
//Get the IFD (Image File Directory) which is the root of all the tags
//for this image. From here we can get all the tags in the image.
TIFFDirectory ifd = TIFFDirectory.createFromMetadata(imageMetadata);
double xPixles = ifd.getTIFFField(256).getAsDouble(0);
double yPixles = ifd.getTIFFField(257).getAsDouble(0);
double xRes = ifd.getTIFFField(282).getAsDouble(0);
double yres = ifd.getTIFFField(283).getAsDouble(0);
int resUnits = ifd.getTIFFField(296).getAsInt(0);
double imageWidth = xPixles / xRes;
double imageHeight = yPixles / yres;
//if units are in CM convert ot inches
if (resUnits == 3)
imageWidth = imageWidth * 0.3937;
imageHeight = imageHeight * 0.3937;
//convert to pixles in 72 DPI
imageWidth = imageWidth * 72;
imageHeight = imageHeight * 72;
setImgWidth((int) Math.round(imageWidth));
setImgHeight((int) Math.round(imageHeight));
setImgAspectRatio(imageWidth / imageHeight);
} -
Hiii,
ich want to get a query result for a certain adress. I have used the search object "COBYADDRQuery". In the transaction GENIL_BOL_BROWSER I get results for this search object, when I type the city in the search object field "CITY1".
But in my coding below the entities in the query result return no values.
Here is my codng:
DATA:
core TYPE REF TO cl_crm_bol_core,
ls_adress TYPE crm_isu_tec_co,
lr_query TYPE REF TO cl_crm_bol_query_service,
lr_addr_obj TYPE REF TO if_bol_entity_col
core = cl_crm_bol_core=>get_instance( ).
core->start_up( 'ALL' ).
ls_adress-city1 = 'Amsterdam'.
lr_query = cl_crm_bol_query_service=>get_instance( 'COBYADDRQuery' ).
lr_query->if_bol_bo_property_access~set_properties( is_attributes = ls_adress).
lr_addr_obj = lr_addr_query->get_query_result( ).
As I said before, the entities in my result object lr_addr_obj has no valus. Can anyone explain why the entities has no values? The GENIL_BOL_BROWSER return the correct values which matches with the search criteria.
Kind Regards,
JohnHi John,
Change the lr_addr_query to lr_query as below:
lr_query->if_bol_bo_property_access~set_properties( is_attributes = ls_adress ).
lr_addr_obj = lr_query->get_query_result( ).
try to copy paste the code above and try it..
Regards,
Madhumitha
Maybe you are looking for
-
ITunes 10.5 is using more and more memory untill it crashes
iTunes 10.5 on my windows xp computer starts using 132MB of memory. When I add data to an app on my iPad2 (for instance adding my comic book collection) iTunes uses aprox. 10 MB of memory to get 1 comicbook to my iPad2. Every time I add an new comicb
-
Hi, We have transactional replication Setup in our company , a set of tables involved in replication needed to be reloaded on prod say about 12-13 Million rows . We decided to drop the articles and add it back to replication so that a new snapshot fo
-
Can I run OSX 10.1.x on my OSX 10.8.2 iMac?
Greetings, I have a 4 year old iMac running OSX 10.8.2. I recently purchased a Nikon film scanner (discontinued 3 - 4 years ago) that has bundled software compatible with OSX 10.1.x and Windows XP. I know that it is possible to load WIndows XP on m
-
Problem with Stamp Cloning Tool in CS5?
Hello, I am having the darndest problem that I've never encountered before. I am using the cloning tool in CS5 and I am trying to stamp clone one part of the photo and clone it to another part of the photo. The problem is that after I option click an
-
How do I create a single image using PSE12 from multiple originals in which the originals are still separate (i.e. side by side or arranged in a square)? I could do this in PSE2, but can't find how to get PSE12 to do it. Grecophile55