Locator SQL Questions

Gentlemen,
I have a table in Locator that is made of of polygons (loaded via MapInfo EasyLoader). What I need to do is to send Oracle a latitude and longitude and have Oracle return the polygon in which that location falls in. I am new to loator and so this is probably an easy question. I have been experimenting with SQL statements and I tried the following:
Select MUSYM From ENCLASS_USER.SOILMU_A_IA001
Where SDO_INSIDE(sdo_geometry(2001, 8307, sdo_point_type(-94.53825,41.38343, NULL),null,null),GEOLOC) = 'TRUE'
The error returned indicates the "interface not supportrd without a spatial index". The table has a spatial index, however I think that the problem is with the latitude and longitude portion of the SQL. In the above statement, MUSYM is the value of the column in the polygon table I need returned and GEOLOC is the SDO_GEOMETRY Column. The Lat/Long coordinates are -94.53825,41.38343 in the example above.
How do I construct this SQL so that it will work?
Thansk for your help,
Tim Fast
Pioneer Hi-Bred International, Inc.

The SQL that I am using is:
Select MUSYM From ENCLASS_USER.SOILMU_A_IA001
Where SDO_INSIDE
(GEOLOC,sdo_geometry(2001, 8307, sdo_point_type(-94.542208,41.383796, NULL),null,null)) = 'TRUE'
It should return the MUSYM of "370B"
I don't know how to send you the sample rows but here are three rows in which the first one is the polygon that should be returned. The columns are "|" delimited when exported form Oracle.
AREASYMBOL|SPATIALVER|MUSYM|MUKEY|MI_STYLE|MI_PRINX|GEOLOC
IA001|0|370B|402176||1|(2003, 8307, (-94.54199904, 41.38330203, ), (1, 1003, 1, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ), (-94.54315104, 41.38333398, -94.54303116, 41.38323597, -94.543029, 41.38314201, -94.54290912, 41.383044, -94.54279212, 41.38304598, -94.54267188, 41.38294797, -94.54232088, 41.38294896, -94.54184208, 41.38256304, -94.541724, 41.38256502, -94.54160484, 41.38246701, -94.54148784, 41.38246899, -94.54136796, 41.38237197, -94.54125096, 41.38237296, -94.54077612, 41.38198803, -94.54077504, 41.38188903, -94.54030596, 41.38150302, -94.54018896, 41.381505, -94.53960684, 41.38102098, -94.53948984, 41.38102296, -94.53902904, 41.38063704, -94.53856212, 41.38063902, -94.53844404, 41.38073496, -94.53844116, 41.380929, -94.53878784, 41.381217, -94.53890412, 41.38121601, -94.53902004, 41.38131303, -94.53913704, 41.381316, -94.53936996, 41.38150698, -94.53937104, 41.38179498, -94.53960396, 41.38179597, -94.53995784, 41.38208397, -94.53996108, 41.38227801, -94.54067892, 41.38285401, -94.54056516, 41.38295004, -94.54056804, 41.38304904, -94.54092804, 41.38333704, -94.54104504, 41.38333497, -94.54128588, 41.38353, -94.54140216, 41.38352901, -94.54164192, 41.383719, -94.54164912, 41.38391196, -94.54153608, 41.38400898, -94.54130316, 41.384007, -94.541076, 41.38420401, -94.54119588, 41.38429698, -94.54119912, 41.38439598, -94.541319, 41.38448904, -94.54132188, 41.38458804, -94.54144104, 41.38468101, -94.54144392, 41.38478001))
IA001|0|370C2|402178||2|(2003, 8307, (-94.53918312, 41.38067601, ), (1, 1003, 1, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ), (-94.53523392, 41.378121, -94.535001, 41.37812397, -94.53488616, 41.37802704, -94.53465288, 41.37803001, -94.53453696, 41.377932, -94.53407112, 41.37793398, -94.53395304, 41.37803001, -94.53395304, 41.37812496, -94.53418416, 41.37831999, -94.53417984, 41.37861204, -94.53429504, 41.37870996, -94.53429396, 41.378805, -94.53440916, 41.37890202, -94.53440304, 41.37928902, -94.53428496, 41.37939, -94.53382092, 41.37939198, -94.53370716, 41.37929397, -94.53335904, 41.37929397, -94.53324204, 41.37939099, -94.53324096, 41.37948999, -94.53358404, 41.37977799, -94.53427884, 41.37977799, -94.53439584, 41.37968097, -94.53451212, 41.37967998, -94.53474792, 41.37948297, -94.53521196, 41.37948099, -94.53532608, 41.379579, -94.535208, 41.37967503, -94.53520404, 41.37987303, -94.53531888, 41.379966, -94.53543408, 41.37996897, -94.53566988, 41.37977304, -94.53601908, 41.37977196, -94.53613284, 41.37986997, -94.53625092, 41.37976899, -94.53636684, 41.37977196, -94.53659616, 41.37996303, -94.536594, 41.38006203, -94.53670812, 41.38016004, -94.53670092, 41.38054704, -94.53658284, 41.38064298, -94.53634992, 41.38064199, -94.53623292, 41.38074198, -94.53600108, 41.38074099, -94.535766, 41.38093296, -94.53588084, 41.38103097, -94.53669408, 41.38102899, -94.53692808, 41.38083702, -94.53727692, 41.38083603, -94.53739212, 41.380929))
IA001|0|570C2|402192||3|(2003, 8307, (-94.54121496, 41.38369497, ), (1, 1003, 1, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ), (-94.53887784, 41.38449498, -94.53875688, 41.38439697, -94.53863988, 41.38439904, -94.53852108, 41.38430103, -94.53817188, 41.38430103, -94.53805992, 41.38439697, -94.53794292, 41.38439904, -94.53770208, 41.38420896, -94.53746988, 41.38420698, -94.53735, 41.38411401, -94.537233, 41.38411104, -94.53711312, 41.38401798, -94.53653208, 41.38401699, -94.53629088, 41.383827, -94.53582612, 41.38382799, -94.53571488, 41.38392402, -94.53571884, 41.38401897, -94.53584016, 41.38411599, -94.53584304, 41.38421103, -94.53620484, 41.38449903, -94.537134, 41.38449498, -94.53725388, 41.38459299, -94.53725892, 41.38468704, -94.53737916, 41.38478496, -94.53738312, 41.38487901, -94.537503, 41.38497702, -94.53819996, 41.38497702, -94.53831984, 41.385069, -94.53843612, 41.38506801, -94.53855492, 41.38516503, -94.53867084, 41.38516404, -94.53891096, 41.38535898, -94.53902688, 41.385357, -94.539384, 41.385645, -94.53949992, 41.38564401, -94.53961188, 41.38554798, -94.53972816, 41.385546, -94.53995388, 41.38535403, -94.54007016, 41.385357, -94.54018284, 41.38526097, -94.54099392, 41.38525899, -94.54111308, 41.38535196, -94.54122612, 41.38525602, -94.54134204, 41.38525899, -94.54156884, 41.38506603, -94.54156308, 41.38487298, -94.54144392, 41.38478001, -94.54144104, 41.38468101, -94.54132188, 41.38458804, -94.541319, 41.38448904))
Tim Fast

Similar Messages

  • SQL Question Bank and Answers for Practise

    Dear Readers:
    Does any one have any recommendation on SQL question bank and answers where I could practice my SQL.
    I have developed some basic knowledge of SQL thanks to the MS community, but I am looking for some additional Questions or textbook  recommendations which has questions and answers to queries for practice.
    Best Wishes,
    SQL75

    Hi,
    Refer below post.
    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/446b2247-5124-49c1-90c9-b7fea0aa4f83/sql-dba-books?forum=sqlgetstarted
    Please mark solved if I've answered your question, vote for it as helpful to help other users find a solution quicker
    Praveen Dsa | MCITP - Database Administrator 2008 |
    My Blog | My Page

  • Sql question : TRUNCATE vs Delete

    hi
    this is sql question, i don't know where i should post it, so here it is.
    i just want to know the best usage of each. both commands delete records in a table, one deletes all, and the other can do the same plus option to delete specified records. if i just want to purge the table. which one is better and why? thanks

    this is crucial to my design, i need to be able to
    rollback if one of the process in the transaction
    failed, the whole transaction should rollback. if
    truncate does not give me this capability, then i have
    to consider Delete.From the Oracle manual (sans the pretty formatting):
    TRUNCATE
    Caution: You cannot roll back a TRUNCATE statement.
    Purpose
    Use the TRUNCATE statement to remove all rows from a table or cluster. By default,
    Oracle also deallocates all space used by the removed rows except that specified by
    the MINEXTENTS storage parameter and sets the NEXT storage parameter to the size
    of the last extent removed from the segment by the truncation process.
    Removing rows with the TRUNCATE statement can be more efficient than dropping
    and re-creating a table. Dropping and re-creating a table invalidates the table?s
    dependent objects, requires you to regrant object privileges on the table, and
    requires you to re-create the table?s indexes, integrity constraints, and triggers and
    respecify its storage parameters. Truncating has none of these effects.
    See Also:
    DELETE on page 16-55 and DROP TABLE on page 17-6 for
    information on other ways to drop table data from the database
    DROP CLUSTER on page 16-67 for information on dropping
    cluster tables
    Prerequisites
    To truncate a table or cluster, the table or cluster must be in your schema or you
    must have DROP ANY TABLE system privilege.

  • Urgent SQL question : how to flip vertical row values to horizontal ?

    Hello, Oracle people !
    I have an urgent SQL question : (simple for you)
    using SELECT statement, how to convert vertical row values to horizontal ?
    For example :
    (Given result-set)
    MANAGER COLUMN1 COLUMN2 COLUMN3
    K. Smith ......1
    K. Smith ...............1
    K. Smith ........................1
    (Needed result-set)
    MANAGER COLUMN1 COLUMN2 COLUMN3
    K. Smith ......1 .......1 .......1
    I know you can, just don't remeber how and can't find exactly answer I'm looking for. Probably using some analytic SQL function (CAST OVER, PARTITION BY, etc.)
    Please Help !!!
    Thanx !
    Steve.

    scott@ORA92> column vice_president format a30
    scott@ORA92> SELECT f.VICE_PRESIDENT, A.DAYS_5, B.DAYS_10, C.DAYS_20, D.DAYS_30, E.DAYS_40
      2  FROM   (select t2.*,
      3                row_number () over
      4                  (partition by vice_president
      5                   order by days_5, days_10, days_20, days_30, days_40) rn
      6            from   t2) f,
      7           (SELECT T2.*,
      8                row_number () over (partition by vice_president order by days_5) RN
      9            FROM   T2 WHERE DAYS_5 IS NOT NULL) A,
    10           (SELECT T2.*,
    11                row_number () over (partition by vice_president order by days_10) RN
    12            FROM   T2 WHERE DAYS_10 IS NOT NULL) B,
    13           (SELECT T2.*,
    14                row_number () over (partition by vice_president order by days_20) RN
    15            FROM   T2 WHERE DAYS_20 IS NOT NULL) C,
    16           (SELECT T2.*,
    17                row_number () over (partition by vice_president order by days_30) RN
    18            FROM   T2 WHERE DAYS_30 IS NOT NULL) D,
    19           (SELECT T2.*,
    20                row_number () over (partition by vice_president order by days_40) RN
    21            FROM   T2 WHERE DAYS_40 IS NOT NULL) E
    22  WHERE  f.VICE_PRESIDENT = A.VICE_PRESIDENT (+)
    23  AND    f.VICE_PRESIDENT = B.VICE_PRESIDENT (+)
    24  AND    f.VICE_PRESIDENT = C.VICE_PRESIDENT (+)
    25  AND    f.VICE_PRESIDENT = D.VICE_PRESIDENT (+)
    26  AND    f.VICE_PRESIDENT = E.VICE_PRESIDENT (+)
    27  AND    f.RN = A.RN (+)
    28  AND    f.RN = B.RN (+)
    29  AND    f.RN = C.RN (+)
    30  AND    f.RN = D.RN (+)
    31  AND    f.RN = E.RN (+)
    32  and    (a.days_5 is not null
    33            or b.days_10 is not null
    34            or c.days_20 is not null
    35            or d.days_30 is not null
    36            or e.days_40 is not null)
    37  /
    VICE_PRESIDENT                     DAYS_5    DAYS_10    DAYS_20    DAYS_30    DAYS_40
    Fedele Mark                                                          35473      35209
    Fedele Mark                                                          35479      35258
    Schultz Christine                              35700
    South John                                                                      35253
    Stack Kevin                                    35701      35604      35402      35115
    Stack Kevin                                    35705      35635      35415      35156
    Stack Kevin                                    35706      35642      35472      35295
    Stack Kevin                                    35707      35666      35477
    Stack Kevin                                               35667      35480
    Stack Kevin                                               35686
    Unknown                             35817      35698      35596      35363      35006
    Unknown                                        35702      35597      35365      35149
    Unknown                                        35724      35599      35370      35155
    Unknown                                                   35600      35413      35344
    Unknown                                                   35601      35451      35345
    Unknown                                                   35602      35467
    Unknown                                                   35603      35468
    Unknown                                                   35607      35475
    Unknown                                                   35643      35508
    Unknown                                                   35644
    Unknown                                                   35669
    Unknown                                                   35684
    Walmsley Brian                                 35725      35598
    23 rows selected.

  • SQL Questions (New to Cisco)

    Hello. I work for Clarian Health in Indianapolis and am trying to learn as much as possible about the SQL databases, both AWDB and HDS so that I can handle the reporting for our Revenue Cycle Customer Service.
    I am currently working my way through the Database Schema Handbook for Cisco Unified ICM /Contact Center Enterprise & Hosted. I’m also reviewing the explanation pages that are available for the reports on WebView. During my reviews, I have noticed a few things that confuse me.
    My questions are:
    1. Why do a majority of the tables on our SQL Server start with “t_”?
    2. Why do some of the tables have data on the AWDB server but not on the HDS server, and vice versa? (Examples: t_Agent and t_Agent_Team and t_Agent_Team_Member and t_Person are blank on the HDS database but not blank on the AWDB database; but the t_Agent_Logout is blank on the AWDB database and not blank on the HDS database)
    3. When data is moved to the HDS server every 30 minutes, is it also removed from the corresponding AWDB table?
    4. In review of the agent26: Agent Consolidated Daily Report syntax info located on the WebView, 1 of the calculations uses the LoggedOnTimeToHalf from the Agent_Half_Hour table while the remaining calculations uses the same field from the Agent_Skill_Group_Half_Hour table. Can you please tell me why this is? Why would all of the percent calculations not use the data from the same table? (The % of time Agent paused and/or put a task on hold uses the Agent_Half_Hour Table. All other % calculations uses the same field from the Agent_Skill_Group_Half_Hour Table.)
    5. Also in reviewing the agent26: Agent Consolidated Daily Report syntax info, I noticed that it contains the Skill_Group table, the Agent_Half_Hour table and the Media_Routing_Domain table. Both the Skill Group table and the Agen_Half_Hour table contain links to the Media_Routing_Domain table. Which relationship/join is actually utilized for this report?
    6. Why doesn't the LoggedOnTimeToHalf field on both the Agent_Half_Hour table and the Agent_Skill_Group_Half_Hour table have the same value in them?
    7. On the agent_26: Agent Consolidated Daily Report syntax explanation page, the Agent State Times: Log on Duration says that it is derived using the Agent_Half_Hour.LoggedOnTimeToHalf field, but when i convert this field to HH:MM:SS, it does not match the actual WebView report. But, when I use the Agent_Skill_Group_Half_Hour.LoggedOnTimeToHalfHour, it does match. Which one is correct?
    8. On the agent_26: Agent Consolidated Daily Report, why does the Completed Tasks: Transfer Out contain both the TransferredOutCallsToHalf and the NetTransferredOutCallsToHalf fields? What's the difference between the two? What Transfer out data writes to each field?
    Thank you.
    Angie Combest
    Clarian Health
    [email protected]

    You need to be careful when looking at the three databases - Logger, AW, HDS - which use the same schema. But many of what appear to be tables in the AW are really views into the t_ tables in the HDS - the data is not there in the AW DB. You are right to look at the schema - but check with SQL Enterprise to understand a bit more.
    In essence, the AW DB is for configuration data and real-time data. The HDS is for historical data. You can query the AW DB for (say) Call_Type_Half_Hour data and join with the Call_Type table to resolve the call type ID into its name - but the data is really in the HDS through the view.
    The DB design is quite complex and sophisticated - many things are not obvious.
    Keep up your research.
    Regards,
    Geoff

  • SQL Question: Selecting earliest date time

    I've a table that contains multiple transactions per any given day.
    For each day of the month, I'm trying to find the earliest transaction possible.  Below is my table data:
    DATE                    |QUANTITY    |DIVISION    |  LOCATION
    01-JAN-2008 12:42:01 AM |1234        |1           |  NORTH
    01-JAN-2008 05:42:22 AM |1200        |1           |  NORTH
    01-FEB-2008 01:42:01 AM |1123        |1           |  NORTH
    01-FEB-2008 03:11:01 AM |985         |1           |  NORTH
    So the question is, how do I select the EARLIEST transaction row for each given month,
    This is my current SQL:
    select       min(DATE),
                 QUANTITY,
                 DIVISION,
                 LOCATION
                 from TABLE
                 group by QUANTITY, DIVISION, LOCATION
    DATE field is a datatype "DATE" in Oracle database
    My goal is to pretty much have the results shown as follows:
    DATE                    |QUANTITY    |DIVISION    |  LOCATION
    01-JAN-2008 12:42:01 AM |1234        |1           |  NORTH
    01-FEB-2008 01:42:01 AM |1123        |1           |  NORTH

    Hi Eric
    Use the following query:
    select    DATE,
                 QUANTITY,
                 DIVISION,
                 LOCATION
                 from TABLE
    where DATE in
    select min(DATE) from TABLE
    group by to_char(DATE,'YYYY')
    group by DATE,QUANTITY, DIVISION, LOCATION
    Hope this helps.
    Regards
    Nikhil

  • Lync 2013 for 8000 user for 6 locations - Topology question

    Hello everyone,
    I have a project for Lync on 6 locations (Central site and 5 other branches) and would like to like to ask some questions regarding the topology of servers. 
    What I initially think would be required for those users is as following:
    1- 2 Pools (Central pool will have 3 Lync FE Enterprise) in the central site)  and another pool will have at least 1 FE Enterprise In each branch.. 
    2- 1 SQL BE +  Mirror + Witness for all the Front ends. 
    3- ONE SQL for Archiving and Monitoring
    4- One SQL for Persistent chat pool
    5- One Mediation server or a Pool with 2 Mediation servers. 
    6- One Edge Pool with 2 Edge Servers.
    The questions that I would like to ask regarding this topology is as following
    1- Would the front end servers distribution as I stated be convenient for such situation to avoid any issues with connectivity or HA ? And do pool pairing between the two pools for HA? 
    2- Would one Backend SQL with Mirror and Witness be enough for all front ends in all locations considering there's a 100 MB MPLS connection between all locations.? or is it better if I deploy SQL BE for each site? 
    3- In case of Edge Pool. how would the Public IPs distribution and the public/Internal DNS configuration be with the presence of Hardware and DNS load balancers?  
    I'm curious in things like 
    A- How many Public IPs would there be? 
    B- What are the Configuration of the Public DNS be like ? e.g. SIP A Name would point to how many IPs.
    C- How would the Hardware load balancer configuration be like ?
    4- Would a hardware load balancer be required to handle the traffic of all those numbers of users? or would one reverse proxy be enough?
    5- Customer required disaster site deployment so Is it possible to deploy Lync on another data center and do Pool pairing ?
    I would appreciate your suggestions and comments.
    Thanks 
    Mohammed JH

    Does that mean I will have to install SQL Backend in all 6 locations for FEs?
    - Each pool of Enterprise Edition FE's will require a SQL backend database.
    Do you mean I'll have to do the failover manually by powershell?
    - Yes, if acceptable you could use the resiliency built in to Lync server
    since you have multiple pools. If you loose SQL in Lync 2013 your front ends will maintain most functionality, if you loose an entire Lync pool PSTN calling can automatically fail over, however you will need to run a couple of PowerShell commands to fail the
    entire pool over.
    I have 6 different locations,
    so I think this means i'll install 6 different pools with one FE in each location and do Pool pairing between 3 of them with the other 3. do you think this make sense?
    - Ideally each pool should
    have 3 FE's. For the smaller sites
    I would look at using Lync Standard Edition. Standard Edition supports up for 5000 users on hardware or about 2500 on VM and it run's SQL locally. You only really need to use Enterprise Edition
    where you require the pool to be highly available.
    Does this mean that I need 6 Edges with each 3 Public IPs on each one? Can't I just deploy 1 pool with 2 Edges on it and associate
    them with all the pools .. I haven't tried that before to be honest.  
    - Yes you can do that. I would deploy 2 edge pools in 2 different sites with1 or 2 servers in each. This will give you failover options
    if you have an entire site go down.
    And btw I wonder how would the SIP, AV and Webconf names point to ....
    in case of all those IPs I think they will be configured on the load balancer right?
    - Youd have the public IP's on the load balancer, then you can use private
    IP's on the edge servers and load balance across the pool.
    I read microsoft says it's recommended for the HTTPS but with the number of users that will be enabled for Lync you mean that the Reverse proxy should handle all the traffic? I will be using IIS ARR should that be enough?
    - Each pool will have its own web services that need a reverse proxy so you could use IIS ARR in each location. Is that what you were thinking, or was the plan to centrally locate the reverse proxy for all pools?
    Hope its all becoming clearer :)
    Andrew Morpeth
    Lync Server Specialist - Auckland, NZ
    Check out my blog

  • SCCM Remote SQL Question

    Planning a design for SCCM. I have one datacenter, where Primary server, DP, MP, will be located at. Question I have is, does it make sense to have SQL co-located or can I put on dedicated SQL server for our DBA group to handle?

    In my opinion there are very few reasons to use remote SQL.
    http://www.gerryhampsoncm.blogspot.ie/2013/10/configmgr-sql-some-tips.html
    Gerry Hampson | Blog:
    www.gerryhampsoncm.blogspot.ie | LinkedIn:
    Gerry Hampson | Twitter:
    @gerryhampson

  • Glogin.sql question

    Please advise on how I can get a PL/SQL script to work when a user logs onto the database. I wrote the a good script which works but when I tried puting it in $ORACLE_HOME/sqlplus/admin/glogin.sql it does not run. I used @ (example @script.sql), run and start and all failed. It only worked when I typed the whole script out (line by line) in glogin.sql. This is on Oracle8 database on Solaris 7.
    Thank you,
    Mark

    user489948 wrote:
    Hello,
    I have a glogin.sql file on Oracle 11gR2 server (Linux Box), and also set SQLPATH to proper location. When I start SQL*Plus from the server, all settings in glogin.sql work properly. However, when I start SQL*Plus from Oracle Client (Windows Box and there is no login.sql on this Client) to connect to that DB server, I could not see any settings.
    I want all users who connect to the this database have the identical settings in their SQL*Plus. Is there any setting needed in Client side??
    Thanks in advance!!!Not a rhetorical question below.
    how can a directory path that is valid for NIX server also be valid for WINDOWS* client;
    when SQLPATH is actually an OS environmental variable?

  • General SQL question

    I have seen the following in some sql, but not sure of the difference.
    select abc, NULL from xyz where .....
    select abc, to_char(NULL) from xyz where ....
    my question is there a difference between NULL and TO_CHAR(NULL) ?
    Thanks.

    BluShadow wrote:
    Looks like someone was trying to cast the null to a varchar2 datatype so that SQL knew the datatype of the column. In that case they should have used the CAST function...
    Blu:
    Just out of curiosity, any particular reason for the preference for cast instead of to_datatype(null)? I often use that construct, particularly in union type queries. The cast is sematically meaningless in a union query since the column will get the size of the largest column in the query.
    SQL> set null null
    SQL> select *
      2  from (select 1 id, null c1, to_char(null) c2, cast(null as varchar2(10)) c3 from dual
      3        union all
      4        select 2, 'Hello there', 'Hello there', 'Hello there' from dual);
            ID C1          C2          C3
             1 null        null        null
             2 Hello there Hello there Hello there
    SQL> create view v as
      2  select *
      3  from (select 1 id, null c1, to_char(null) c2, cast(null as varchar2(10)) c3 from dual
      4        union all
      5        select 2, 'Hello there', 'Hello there', 'Hello there' from dual);
    View created.
    SQL> desc v;
    Name               Null?    Type
    ID                          NUMBER
    C1                          VARCHAR2(11)
    C2                          VARCHAR2(11)
    C3                          VARCHAR2(11)About the only place where I would use an explicit cast is if I was "hiding" the content of a column in a view, but needed to maintain the same structure as the table.
    John

  • SQL question- on how to handle groups of records at a time.

    Hi,
    I have a sql that looks like the following:
    insert into INVALID_DATES_TMP
    (id, gid, created, t_rowid, updated)
    select id, gid, created, rowid, updated
    from TABLE1
    where fix_invalid_date_pkg.is_date_invalid('TABLE1', 'CREATED', ROWID) = 'Y';
    COMMIT;
    What the above sql does is selects all rows from TABLE1 where the CREATED column
    has invalid dates and inserts them into invalid_dates_tmp table. So we can process/fix
    those invalid dates from the temp table. Problem is our DBA said Table1 can have
    millions of rows so the above sql can be very database intensive. So, I need to
    figure out another way that may handle chunks of rows at a time from table1.
    Any ideas are appreciated!
    ThankYou,
    Radhika.

    Hallo,
    in general INSERT AS SELECT is the fastest method to insert into the table.
    Probably you can use direct load ? (Hint APPEND).
    Other options (INSERT IN LOOP or BULK + FORALL) are slower.
    I think, this method is optimal.
    Another question is, the function itself. It is not clear, whether it searches the invalid dates optimal. I suppose strong, that function uses dynamic SQL.
    Why ? It is better to search static . Or you use this function for many other columns ? Could you post the function also ?
    Regards
    Dmytro

  • Parent - child table issue wrt to count - SQL question

    I have a scenario:
    There are 2 tables (parent and child). lets say, case summary table and task level dimension table.
    for every case id in case summary table, there would be multiple tasks in task level dim table with a flag indicator set to 1 for all tasks.
    but while counting the number of cases active with flag indicator 1 (ofcourse when joining case summary table with task dimension table), for a case id only 1 instance of task needs to be accounted (even though it has more than one task , for counting active cases, the flag ind corresponding to a task in a case if set to 1 , then the case is considered active)..but while joining and taking count of case ids with flag indicator as 1, you get the count of every task row of a case which is incorrect logically. how to discard the rest of child records of a case in child table (task dimension table)?
    I am not sure how to achieve this in sql query
    Kindly help!
    Case summary table
    case id, busininess_unit, agent_name
    1001, admin, Ram
    1002, Finance, Sam
    task table
    case id, task_id,task_name, flag_indicator
    1001, 1, 'New', 1
    1001,2, 'Open',1
    1001,3,'In progress',1
    1002, 4, 'New', 1
    (In fact task_id is not a big deal... even you can assume task id doesn't exist..only task name ... )
    now my question... if my query should get the current active cases (ind=1); as per above it should essentially give 2... but my query gives me 4..you know the reason why.. but how do i get the correct count?
    Thanks!

    may be you need just this:
    select count(distinct case_id) from task
    where indicator = 1;
    If this is not what you are looking for, please elaborate and tell us the expected output and rest of the details as mentioned in FAQ Re: 2. How do I ask a question on the forums?:

  • Locate SQL causes full table scans from Statspack

    Hello,
    In my statspack reports I see a lot of full tables scans (1,425,297)
    How can I locate the query that causes this ?
    stats$sql_plan should fit?
    Oracle is 9i
    Thank you

    >
    How can I locate the query that causes this ?
    It can be hard. One idea is to put comments in queries identifying where they come from, something like
    select /* my_package.my_procedure */ *
      from dual;
    [/code
    The comment should remain with the sql text so various reports showing the sql text should also indicate where the query is]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • SQL question - please help!

    Hi,
    I am working on a SQL, please help ms with the question
    below .... thanks
    (1)Increase by 10% salary of these captain pilots who have
    traveled more than 800,000 miles.
    Routes | | Flights | |Pilots |
    | | | | |
    #routeID | | #flightNO | |#pilotID |
    depAirportID |        |  airplaneNO| |*name |
    arrAirportID |_______/|  pilotID |\___________|*hours_in_air|
    length       |       \|  routeID |/ |*grade |
    ______________| |_____________| |*salary |
    |____________|

    If the length column in routes is in hours, and it represents
    additional hours to those shown in hours_in_air in pilots, then
    the following should work:
    UPDATE pilots
    SET salary = salary * 1.1
    WHERE pilotid in (SELECT a.pilotid
    FROM pilots a,
         (SELECT b.pilotid,sum(c.length) new_hours
          FROM flights b, routes c
          WHERE b.routeid = c.routeid
          GROUP BY b.pilotid) d
    WHERE a.pilotid = d.pilotid and
          new_hours + hours_in_air >= 80000)I suspect that you probably need to add additional criteria to
    the sub-query from flights and routes to take into account only
    flights since the hours_in_air column from pilots was last
    updated. However, your table structures do not indicate any
    date sensitivity. If the table flights is emptied every time
    hours_in_air is updated, then the query above will work.

  • SQL Question (Select rows with multiple records)

    Hello Gurus,
    I am learning SQL and have a question. Thanks for your time and help.
    I have 2 tables TABLE_AA and TABLE_BB. Both tables have two columns ID, DATA.
    TABLE_AA is connected to TABLE_BB through ID field (TABLE_AA.AA_DATA = TABLE_BB.BB_DATA)
    TABLE_AA
    ~~~~~~~
    AA_ID______AA_DATA
    ~~~~~~~~~~~~~~~~
    1111_______XXXX
    2222_______QQQQ
    3333_______ZZZZZ
    4444_______PPPPP
    ~~~~~~~
    TABLE_BB
    ~~~~~~~
    BB_ID BB_DATA
    ~~~~~~~~~~~~~~~~
    1111_______AAAA
    2222_______BBBB
    3333_______CCCC
    3333_______DDDD
    4444_______EEEE
    I am looking to get those AA_ID values that have multiple in TABLE_BB for their parent reference in TABLE_BB.
    So, from the above example, the sql should return the following as AA_ID 3333 has more than 1 reference value in BB_ID
    AA_ID_____BB_ID
    ~~~~~~~~~~
    3333______CCCC
    3333______DDDD

    Hi,
    It's working fine. !!
    14:10:05 topgun>With a As
    14:10:06   2   (
    14:10:06   3   Select 1111 c1, 'AAAA' c2 From dual Union All
    14:10:06   4    Select 2222 ,   'BBBB'    From dual Union All
    14:10:06   5    Select 3333 ,   'CCCC'    From dual Union All
    14:10:06   6    Select 4444 ,   'DDDD'    From dual
    14:10:06   7   ), b As
    14:10:06   8    (
    14:10:06   9    Select 1111 c1,'AAAA' c2 From dual Union All
    14:10:06  10   Select 2222 ,  'BBBB'    From dual Union All
    14:10:06  11   Select 3333 ,  'CCCC'    From dual Union All
    14:10:06  12   Select 3333 ,  'DDDD'    From dual Union All
    14:10:06  13   Select 4444 ,  'EEEE'    From dual
    14:10:06  14    )
    14:10:06  15   Select c1,
    14:10:06  16           c2
    14:10:06  17     From
    14:10:06  18       (
    14:10:06  19       Select a.c1,
    14:10:06  20              b.c2,
    14:10:06  21             Count(*) over (Partition By a.c1 Order By a.c1) cnt
    14:10:06  22      From  a,
    14:10:06  23             b
    14:10:06  24       Where a.c1 = b.c1
    14:10:06  25        )
    14:10:06  26   Where cnt = 2;
            C1 C2
          3333 CCCC
          3333 DDDD- Pavan Kumar N

Maybe you are looking for