× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



UPDATE FILEA a SET (a.Field1, a.Field2) = 
  (
    SELECT b.Field1,b.Field2 
    FROM FILEB b
    WHERE SUBSTR(DIGITS(a.RUNDAT)) = b.WKEDAT
  )
WHERE EXISTS 
  (
    SELECT 1
    FROM FILEB b
    WHERE SUBSTR(DIGITS(a.RUNDAT)) = b.WKEDAT
  )

For this kind of update, you need to have 1-to-1 match on dates.  If there
ever is 1-to-many, you'll need to further enhance your WHERE clause to
ensure your natural key guarantees uniqueness.

Also, are all values (century,year,month,day) guaranteed to have 2 digit
representations?  For example, is January represented as 01 or 1?
Above listed join assumes a 2 digit match.

Elvis

-----Original Message-----
From: midrange-l-bounces@xxxxxxxxxxxx
[mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of Rowe, Sheri
Sent: Wednesday, November 29, 2006 1:56 PM
To: midrange-l@xxxxxxxxxxxx
Subject: Another SQL question

Hi,

After I sent this out, my boss decided to change the file I am trying to
update from 8 A to 8 S, so now I just need to compare a 6S field to a 8
S field. (so I spend the remainder or yesterday and today converting
existing programs to fit this new format) I have VERY limited SQL
skills, so would appreciate some help with this.

FILEA  is a data file, Date field is now 8 S   CCYYMMDD format
FILEB  is a calendar file, Date field is 6 S   YYMMDD Format  (Contains
Week end dates)

I need to update fields in FILEA.Field1, FILEA.Field2 from FILEB.Field1,
FILEB.Fiel2 if the date in field FILEA.RUNDAT exists in FILEB.WKEDAT.

Thanks.

Sheri 


   
   3. RE: Another SQL question. (Rick.Chevalier@xxxxxxxxxxxxxxx)
   4. Re: Another SQL question. (Alfredo Delgado)
   5. Re: Another SQL question. (rob@xxxxxxxxx)
   7. Re: Another SQL question. (Alan Shore)
   8. RE: Another SQL question. (Elvis Budimlic)
   
----------------------------------------------------------------------



message: 3
date: Tue, 28 Nov 2006 14:14:42 -0600
from: <Rick.Chevalier@xxxxxxxxxxxxxxx>
subject: RE: Another SQL question.


Sheri,

It's possible to compare them using DIGITS to convert the numeric date
to a character format.  The dates must be in the same format though and
in YYMMDD format.  If they are in MMDDYY format or the 8 byte date has 4
digit years you can't compare them.  You can build a work date field
using concatenate but that can get kind of complex.  Check the archives
for this list and the RPG list.  Date comparison and conversion in SQL
comes up pretty frequently.

Rick

-----Original Message-----
From: midrange-l-bounces@xxxxxxxxxxxx
[mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of Rowe, Sheri
Sent: Tuesday, November 28, 2006 1:57 PM
To: midrange-l@xxxxxxxxxxxx
Subject: Another SQL question.

I need to update fields in FILEA based on a date comparison
with FILEB.
However, the date in FILEA is defined as 8A and the date in
FILEB is defined as 6S.  Is it possible to compare these
fields even though they are not the same format?

It's a one-time fix and I was hoping avoid writing a program.

Thanks.

Sheri Rowe
Timex Canada




------------------------------

message: 4
date: Tue, 28 Nov 2006 15:14:57 -0500
from: Alfredo Delgado <adelgado@xxxxxxxxxxxxxxxxx>
subject: Re: Another SQL question.

Sheri, you can manipulate the values to compare them. Do you have sample

data -- with datatypes -- you could share for further help?

Thanks,
Alfred

Rowe, Sheri wrote:

I need to update fields in FILEA based on a date comparison with FILEB.
However, the date in FILEA is defined as 8A and the date in FILEB is
defined as 6S.  Is it possible to compare these fields even though they
are not the same format?

It's a one-time fix and I was hoping avoid writing a program.

Thanks. 

Sheri Rowe
Timex Canada

 




------------------------------

message: 5
date: Tue, 28 Nov 2006 15:16:39 -0500
from: rob@xxxxxxxxx
subject: Re: Another SQL question.

Other than the dangers of assuming the century it can be done.  Make
sure 
you don't blank out values that are not in the other file.  That's why I

use the Inner Join.

CREATE TABLE ROB/TIMEXA 
(DATE8 CHAR (8 ) NOT NULL WITH DEFAULT,
  BIGSELLER CHAR (15 ) NOT NULL WITH DEFAULT) 
INSERT INTO ROB/TIMEXA VALUES('20061110', 'ITEMA')
INSERT INTO ROB/TIMEXA VALUES('20061111', 'ITEMB')
INSERT INTO ROB/TIMEXA VALUES('20061112', 'ITEMC')

CREATE TABLE ROB/TIMEXB 
(DATE6 CHAR (6 ) NOT NULL WITH DEFAULT,
BIGSELLER CHAR ( 15) NOT NULL WITH DEFAULT) 
INSERT INTO ROB/TIMEXB VALUES('061111', 'ITEMQ')

select * from timexA
....+....1....+....
DATE8     BIGSELLER
20061110  ITEMA 
20061111  ITEMB 
20061112  ITEMC 

select * from timexB
....+....1....+..
DATE6   BIGSELLER
061111  ITEMQ 

(Note:  Your date formats may differ.  Like, DATE6 may be MMDDYY and not

YYMMDD.)
UPDATE timexa a 
    SET bigseller = 
         (SELECT b.bigseller FROM timexB b 
         WHERE substr(a.date8,3,6) = b.date6 
           AND a.bigseller <> b.bigseller) 
    WHERE substr(a.date8,3,6) IN 
         (SELECT substr(a.date8,3,6) from timexa A
          INNER JOIN timexb b 
          ON substr(a.date8,3,6)=b.date6 
          AND a.bigseller <> b.bigseller) 
1 rows updated in TIMEXA in ROB.

select * from timexA
....+....1....+....
DATE8     BIGSELLER
20061110  ITEMA 
20061111  ITEMQ 
20061112  ITEMC 

Rob Berendt

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.