SQL  statement - Get records with single customerid

Hi,
I have this SQL statement as follows:
SELECT debit_balance,credit_balance,customer_id
FROM table_balance
WHERE customer_id IN (SELECT  customer_id
                                      FROM table_balance
                                      GROUP BY customer_id HAVING COUNT (customer_id)= 1)
{code}_Data:_
{code:java}
debit_balance:    credit_balance:   customer_id:
      50                40               1
      10                 0               1
      20                 1               2
       0                 2               3
     121                234              3
{code}_Expected results:_
{code:java}
debit_balance:    credit_balance:   customer_id:
      20                1                2
{code}From my SQL statement, I think my code is not that efficient. How do I make it even more efficient?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

Use analytics
SQL> with t as
  2  (
  3     select 50 a, 40 b,1 c from dual
  4     union all
  5     select 10, 0, 1 from dual
  6     union all
  7     select 20, 1, 2 from dual
  8     union all
  9     select 0,  2, 3 from dual
10     union all
11     select 121,234,3 from dual
12  )
13  select a,b,c
14    from (
15  select count(c) over(partition by c order by c) cnt, t.*
16    from t)
17   where cnt = 1
18  /
         A          B          C
        20          1          2

Similar Messages

  • INSERTED Table - When it gets populated with single or multiple rows?

    Hi,
    I'm trying to create a trigger which then insert to a table. i'm wondering when does the INSERTED table gets populated with single or multiple rows?
    Should I always assume that the INSERTED Table will contains several rows? What does the scope of the INSERTED table in the trigger, isn't based on the user session?
     The reason why i asked this is because as far as i know inserted table may contain several table when the trigger fires which is why I use cursor to insert  records in the table ( there's a behind why i use cursor).
    But if the inserted table will only contain a single record during the session of the trigger then i can avoid the cursor.
    Thanks.

    But since we control the transaction process and we know for a fact that user will only be able to save a record one at a time, do we still expect multiple rows? I just want to have a clear concept on the INSERTED table.
    ...and then the DBA or someone else sees fit to enter a number of rows directly from a query window. And don't laugh. That is bound to happen sooner or later.
    However, just because this can (and will) happen does not mean that you need to handle it on equal footing with the normal case user entering data through the application. What you cannot permit yourself to is to drop the DBA case on the floor, that is write
    the trigger as if there would either be single-row inserts and produce incorrect results for multi-row inserts.
    But, yes, allowing yourself to use a cursor, if you want to reuse the existing stored procedure is feasible. That is also the more drastic solution suggested by Tom to add an explicit check that disallows multi-row inserts.
    Finally, permit me to comment on this:
    Additionally, it's  difficult to use the code below as i need to pass the identity id of tbl_A to tbl_B
    You can use the OUTPUT clause to capture the values, but that requires that you have something you can map the identity values to in the columns you insert, and this is not always the case. However, there is a lot simpler solution to the problem: don't
    use IDENTITY. IDENTITY is one of these over-used and over-abused features in SQL Server. You need it when you want to support high-concurrency inserts, because rolling your own requires a serialisation point. But with a moderate insertion frequency, IDENTITY
    only gives you headache.
    Erland Sommarskog, SQL Server MVP, [email protected]

  • Getting result with single query

    Hi,
    I'm using db 10.2.0.1.0
    I have a table emp_shift , with data like below
    EmpCode           Shift     Effdate            Default
    1                 SHFT1    02-jan-2012          N
    1                 SHFT2    04-jan-2012          Y
    1                 SHFT3    04-jan-2012          NSo if user inputs EmpCode and Effdate, based on that i've to take the latest record, with default = 'Y' (if any) else default 'N'
    Suppose
    Case 1 : Input Empcode:1 Date:10-jan-2012
    Then i should get the below record
    1                 SHFT2    04-jan-2012          YCase 2 : Input Empcode:1 Date:03-jan-2012
    Then i should get the below record
    1                 SHFT1    02-jan-2012          NI want this result with a single query, is this possible?
    Thanks
    Divya

    Hi Thank you both,
    I'm trying this process through forms. and my forms version is 6i.
    There where i'm trying the query with the cursor, i'm getting error
    Encountered the symbol Order when expecting one of the following
    .()...and my cursor is
    Cursor cur_shft(vemp Varchar2,vdate Varchar2) is Select ESM_SHIFT_TYPE
         from (Select ESM_SHIFT_TYPE from EMPLOYEE_SHIFT_MASTER
                   Where ESM_EMP_CODE = vemp
                   and ESM_EFF_DATE <= vdate
                   Order by ESM_EFF_DATE desc,Esm_Default desc)
                   Where rownum=1 ;Whats wrong?

  • Files get open with single click sometimes

    I recently started having this problem. When I browse through different image/video files, some of the files get open with one click only. This is really very annoying. I am event thinking to migrate back to Windows because of this problem.
    How to reproduce the issue:
    -> Open a folder that contains many images/video files
    -> Click on anyone of them to select it
    -> Now click outside the window. So, the finder goes out of the focus (but should stay visible)
    -> Now, inside finder click any other image/video just once, it will open up automatically with just single click

    If you have access to a mouse, try using it. If everything is okay using the mouse, then it is likely trackpad related. Other troubleshooting.
    Try setting up another admin user account to see if the same problem continues. If Back-to-My Mac is selected in System Preferences, the Guest account will not work. The intent is to see if it is specific to one account or a system wide problem. This account can be deleted later.
    Isolating an issue by using another user account
    If the problem is still there, try booting into the Safe Mode.  Shut down the computer and then power it back up. Immediately after hearing the startup chime, hold down the shift key and continue to hold it until the gray Apple icon and a progress bar appear. The boot up is significantly slower than normal. This will reset some caches, forces a directory check, and disables all startup and login items, among other things. If the system operates normally, there may be 3rd party applications which are causing a problem. Try deleting/disabling the third party applications after a restart by using the application unistaller. For each disable/delete, you will need to restart if you don't do them all at once.
    Safe Mode
    Safe Mode - About
    General information.
    Isolating issues in Mac OS X
    Troubleshooting Permission Issues
    Step by Step to Fix Your Mac

  • Muti sql statements execution issue   with DB2 - iSeries

    Hello,
    I  am encountering "[SQL0104] Token ; was not valid. Valid tokens: ). " error  , when  I  execute below statement.
    Using ; (semi colon) for  sql statements separation.
    Please  let me know , how  to fix  it.
    Thanks in advance.
    <cfquery name="qInsertTo" datasource="dsn">
        <cfloop from="1" to="25" index="i">
            insert into test1(userId,firstname) values('xx#i#','fname#i#') ;
        </cfloop>
    </cfquery>
    PS:  I  don't want to keep  cfloop outside  cfquery.

    Hi,
    trhat would be possible for an Unix System ... but I'm on a Windows OS system and I already assign everybody with full modification rights ...
    Thanks anyway for ur help I'll recheck it anyway sometimes its strange ...
    greetings Lars

  • Sql statement not working with for update

    Hi, iam facing an error fetch out of sequence
    when iam trying to execute a sql statement
    Statement st=con.createStatement();
    st.executeQuery(select mycolumn from table where jobno=1 for update);
    the statement works well without " for update ".
    any solutions????

    Hi,
    The fetch out of sequence error occurs usually when you are trying to read from a cursor that has no data left(like EOF).
    After executing the sql statement move the pointer to the first row (or the beginning of the resultset)
    This is actually an oracle error bearing number :ORA:01002
    Hope this helps.
    Thanks,
    Creator Team.

  • [Solved] get records with a date of 11/6/2007 I have to add -1 [Solved]

    Hello - really simple question here, I think anyway.
    I have this line in my query -
    WHERE table2.trans_date_time BETWEEN :p_from_date -1 AND :p_to_date + 1
    Notice the -1 + 1, I had to put this in there because if I wanted all the records that have a date of 11/6/2007, and I enter 11/6/2007 and 11/6/2007 for the variables I get nothing back. But when I added the -1 + 1 it worked.
    Why is this? The table2.trans_date_time column is a DATE data type.
    Thanks!
    Message was edited by:
    computerGal

    Hello compterGal
    I agree with Boneist. What more your where clause statement example, will actually will return all records where the trans_date_time is between 10/06/2007 00:00 and 12/06/2007 00:00 inclusive. That is 2 days and 1 second's worth of data.
    A possible solution if you're looking just for records on a specific day in this senario, but also allow date range capabilities then the following where clause example would be suitable:
    WHERE trunc(table2.trans_date_time) BETWEEN :p_from_date AND :p_to_date
    If the query runs slowly and you have an 8i or later database you can use function indexing to help spead the query up.
    hope this helps.
    Cheers
    Q

  • Getting Counts with single query

    HI,
    I need help in writing a query that gets account counts in a single query,
    CREATE TABLE ACCOUNTINFO(     
    ACCOUNTID VARCHAR2(20 BYTE) NOT NULL,
    ACCOUNTNO VARCHAR2(10 BYTE) NOT NULL,
    LAST_DEPOSIT_DATE DATE,
    BALANCE NUMBER(10,0));
    I have a table like above and I am trying to write a query that gets
    Count of accounts with deposits made in last 1 month,
    Count of accounts with deposits made in last 2 months
    Account Count with balance > 0,
    Also, I need to join this ACCOUNTINFO with ACCOUNTMAIN to get name etc details
    CREATE TABLE ACCOUNTINFO(     
    EMPID VARCHAR2(20 BYTE) NOT NULL,
    FNAME VARCHAR2(30 BYTE) NOT NULL,
    MNAME VARCHAR2(30 BYTE),
    LNAME VARCHAR2(30 BYTE) NOT NULL,
    DOB DATE,
    ACCOUNTID VARCHAR2(20 BYTE));
    Question, how to write a query since I getting too-many counts (I have only 3 in sample above, actual goes on like 3-6, 6-9 etc).

    SELECT SUM  (CASE WHEN LAST_DEPOSIT>=ADD_MONTHS(SYSDATE,-1) THEN
                   1
                 ELSE
                   0
                 END
                ) COUNT_LAST_MONTH,
           SUM  (CASE WHEN LAST_DEPOSIT>=ADD_MONTHS(SYSDATE,-2) THEN
                   1
                 ELSE
                   0
                 END
                ) COUNT_LAST_TWO_MONTHS,
           SUM  (CASE WHEN BALANCE>0 THEN
                   1
                 ELSE
                   0
                 END
                ) COUNT_BALANCE_GREATER_ZERO
      FROM ACCOUNTINFO

  • Get record with ' in name

    I have records in my data that has ' example O'Neil etcs..
    i know i can get the result of the name by entering Oneil;
    however, my boss
    wants to make it work for O'Neil as well.
    how can I return names with ' in it?
    TIA

    is wrote:
    > I have records in my data that has ' example O'Neil
    etcs..
    >
    > i know i can get the result of the name by entering
    Oneil; however, my boss
    > wants to make it work for O'Neil as well.
    >
    > how can I return names with ' in it?
    Check out cfqueryparam.
    Jochem
    Jochem van Dieten
    Adobe Community Expert for ColdFusion

  • How to get this with Single query

    Friends
    I am sure using SQL analytical function, the following can be achieved using a single query:
    Date_value | Cust_id | Customer_tenue | avg_bal
    01-aug-09 | 111 | 0 | 1000
    01-aug-09 | 112 | 1 | 2000
    01-aug-09 | 113 | 2 | 900
    01-aug-09 | 114 | 3 | 1250
    01-sep-09 | 111 | 1 | 1200
    01-sep-09 | 112 | 2 | 2000
    01-sep-09 | 113 | 3 | 1900
    01-sep-09 | 114 | 4 | 1250
    01-oct-09 | 111 | 2 | 1100
    01-oct-09 | 112 | 3 | 2200
    01-oct-09 | 113 | 4 | 1900Expected result
    If customer’s tenure is 0 then mark as ‘New’,
    If customer’s balance is increased from last month then mark as ‘Augment’
    If customer’s balance is same as last month then mark as ‘Maintain’
    If customer’s balance is decreased from last month then mark as ‘Diminish’
    Else ‘Left’
    Help please....

    If customer’s tenure in last month is 0 then mark as ‘New’,There's not such case in test data... last month is October, isn't it?
    SQL> with t as (select DATE '2009-08-01' Date_value, 111 Cust_id, 0 Customer_tenue, 1000 avg_bal from dual union all
      2  select DATE '2009-08-01', 112 , 1 , 2000 from dual union all
      3  select DATE '2009-08-01', 113 , 2 , 900 from dual union all
      4  select DATE '2009-08-01', 114 , 3 , 1250 from dual union all
      5  select DATE '2009-09-01', 111 , 1 , 1200 from dual union all
      6  select DATE '2009-09-01', 112 , 2 , 2000 from dual union all
      7  select DATE '2009-09-01', 113 , 3 , 1900 from dual union all
      8  select DATE '2009-09-01', 114 , 4 , 1250 from dual union all
      9  select DATE '2009-10-01', 111 , 2 , 1100 from dual union all
    10  select DATE '2009-10-01', 112 , 3 , 2200 from dual union all
    11  select DATE '2009-10-01', 113 , 4 , 1900 from dual)
    12  select date_value, cust_id, avg_bal, oldbal, case when Customer_tenue=0 and nextbal is null then 'NEW'
    13                                                    when oldbal<avg_bal then 'Augment'
    14                                                    when oldbal=avg_bal then 'Maintain'
    15                                                    when oldbal>avg_bal then 'Diminish'
    16                                                    else 'Left' end status
    17    from (select date_value, cust_id, customer_tenue, avg_bal, LEAD(avg_bal) over (partition by cust_id order by date_value desc) oldbal,
    18                 LAG(avg_bal) over (partition by cust_id order by date_value desc) nextbal
    19            from t)
    20  order by cust_id, date_value;
    DATE_VALU    CUST_ID    AVG_BAL     OLDBAL STATUS
    01-AGO-09        111       1000            Left
    01-SET-09        111       1200       1000 Augment
    01-OTT-09        111       1100       1200 Diminish
    01-AGO-09        112       2000            Left
    01-SET-09        112       2000       2000 Maintain
    01-OTT-09        112       2200       2000 Augment
    01-AGO-09        113        900            Left
    01-SET-09        113       1900        900 Augment
    01-OTT-09        113       1900       1900 Maintain
    01-AGO-09        114       1250            Left
    01-SET-09        114       1250       1250 Maintain
    Selezionate 11 righe.Max
    [My Italian Oracle blog|http://oracleitalia.wordpress.com/2009/12/29/estrarre-i-dati-in-formato-xml-da-sql/]

  • Feedback on SQL statements: getting sense in 'Table created.'

    Hi,
    I'd like to get some more sense/meaning while performing DDL on tables, users, views, etc. Let me show what I mean.
    create table T1 (a char(10));
    Table created.
    create table T2 (b date);
    Table created.
    Wouldn't it be nice if you have a script with numerous DDL statements, to have feedback like:
    create table T1 (a char(10));
    Table T1 created.
    create table T2 (b date);
    Table T2 created.
    Is there any way to set this? If I have a script which creates 100 tables, I'd like to see (on screen) more than only:
    Table created.
    View created.
    View created.
    User altered.
    etc...
    Any ideas?

    Hello PaulAlsemgeest
    There is a technique for that. This is the using of PROMPT.
    PROMPT *** Creating Table T1 ***
    create table T1 (a char(10));
    PROMPT *** Creating Table T2 ***
    create table T2 (b date);
    *** Creating Table T1 ***
    Table created.
    *** Creating Table T2 ***
    Table created.
    I hope it helps you.

  • Is there a difference between mono & stereo when recording with single mic?

    When creating an audio track to record vocals through a single condenser mic, is there a difference between selecting mono or stereo? if so, what's the difference?

    MaeMarquez wrote:
    When creating an audio track to record vocals through a single condenser mic, is there a difference between selecting mono or stereo? if so, what's the difference?
    Assuming your source is mono, there will be no sonic difference, and recording to a stereo Logic track will simply waste disk space. If you have a stereo microphone (i.e. it's actually a pair of mics packaged together), then it makes sense to record in stereo. If you're using a standard single microphone, record to a mono Logic track.
    -James

  • Executing multiple SQL statements fails using ODBC

    Executing multiple SQL statements will fail with error 'ORA-00911 invalid character' when connecting to an Oracle database using ODBC driver version 8.01.07.00.
    When I use either my application or the Oracle ODBC Test client utility connecting using ODBC driver version 8.01.07.00 I can only get a single CALL statement (as shown below) to execute:
    CALL BHInsert (TO_DATE('2003.07.23 10:04:28','YYYY.MM.DD HH24:MI:SS'),'BATCH_ID','1:CLS_FRENCHVANILLA-1','
    ','Event File
    Name','\\KILLIANS\BATCHCTL\SampleDemo1\JOURNALS\1.evt','','AREA1','','','','','','1','','','','','',' ','');
    When I try to execute the following string with multiple CALL statements (as shown below) it fails with the following error being returned - ORA-00911: invalid character
    CALL BHInsert (TO_DATE('2003.07.23 10:04:28','YYYY.MM.DD HH24:MI:SS'),'BATCH_ID','1:CLS_FRENCHVANILLA-1','
    ','Event File
    Name','\\KILLIANS\BATCHCTL\SampleDemo1\JOURNALS\1.evt','','AREA1','','','','','','1','','','','','',' ','');
    CALL BHInsert (TO_DATE('2003.07.23 10:04:28','YYYY.MM.DD
    HH24:MI:SS'),'BATCH_ID','1:CLS_FRENCHVANILLA-1','Version','Recipe Header','1.0','','AREA1',' ','
    ','','','','1','','','','','',' ','');
    CALL BHInsert (TO_DATE('2003.07.23 10:04:28','YYYY.MM.DD
    HH24:MI:SS'),'BATCH_ID','1:CLS_FRENCHVANILLA-1','Version Date','Recipe Header','5/18/2001 1:28:32
    PM','','AREA1',' ',' ','','','','1','','','','','',' ','');
    CALL BHInsert (TO_DATE('2003.07.23
    10:04:28','YYYY.MM.DD HH24:MI:SS'),'BATCH_ID','1:CLS_FRENCHVANILLA-1','Author','Recipe Header','Mark
    Shepard','','AREA1',' ',' ','','','','1','','','','','',' ','');
    I've tried adding a line feed in addition to the space at the end of each call but that doesn't seem to help. Also have tried unsuccessfully to change the seperator used between each call using various valid continuation characters.
    Executing multiple CALL statements from within Oracle's SQL Worksheet connecting as the same user and password, as my application executes successfully. However when I try this from within the Oracle ODBC test client, it fails with the same ORA-00911 error that I'm seeing in my application.
    I'm currently trying the more recent ODBC drivers, however any ideas or suggestions would be greatly appreciated.

    Can you take the begin ... end block and run it using SQL*Plus?
    I can't think of any documentation that would specifically answer this question. I'm sure if you read & absorbed the ODBC Programmers Reference (2000+ pages) you'd be able to find out, but I don't know of a quick way to find out.
    You can enable SQL*Net tracing. There are a fair number of options for enabling this tracing-- http://tahiti.oracle.com has all the Oracle manuals online, which should give you enough info to configure exactly what you want.
    I would suggest, however, that you look into more performant/ scalable alternatives rather than going too far down this path. A block with lots of SQL statements with literals isn't going to make your database happy even if you get it to work.
    Justin

  • Importing excel files - problem with single quote

    When importing excel files using 1.5, I can't get data with single quotes (') imported.
    When I run the insert statement given in SQLPlus I get "ORA-01756: quoted string not properly terminated", which is different than the error that SQL Developer gives me (see below).
    Also, I have a numeric value shown without a thousands comma-separator in the XLS file that I'm trying to load into a varchar2 field. But, the insert statements have added a thousands comma-separator which I don't want.
    REM Error starting at line 1 in command:
    REM INSERT INTO table (ID, NAME, CODE)
    REM VALUES (2427407, 'Ed-u-care Children's Center', '73,000');
    REM Error at Command Line:2 Column:37
    REM Error report:
    REM SQL Error: ORA-00917: missing comma
    REM 00917. 00000 - "missing comma"
    REM *Cause:   
    REM *Action:
    One last thing, TOAD gives a way to automap columns chosen from XLS to the columns in the database. It sure would be nice to have this functionality in SQL Developer.
    Thanks,
    Steve

    Did you consider both to be bugs (i.e., single quote issue and thousands comma separator issue)?
    Thanks

  • Error in SQL Statement: SAPSQL_INVALID_FIELDNAME F~/BIC/ZREVISQTY

    Dear Guys,
                    Regards..In the "Listcube" transaction and "Manage Contents" of the cube,whenver i execute the transaction to get the 'Output List' ,i get the following error : " Error in SQL Statement : SAPSQL_INVALID_FIELDNAME"..with the following obj : ZREVISQTY............But when i remove the "ZREVISQTY" from the selection screen in both "LISTCUBE" and "MANAGE" of the cube,the output works fine......It would be great if somone can throw light on this...........
    Manythanks
    Arun

    Dear Guys,
                    Regards..In the "Listcube" transaction and "Manage Contents" of the cube,whenver i execute the transaction to get the 'Output List' ,i get the following error : " Error in SQL Statement : SAPSQL_INVALID_FIELDNAME"..with the following obj : ZREVISQTY............But when i remove the "ZREVISQTY" from the selection screen in both "LISTCUBE" and "MANAGE" of the cube,the output works fine......It would be great if somone can throw light on this...........
    Manythanks
    Arun

Maybe you are looking for

  • Problem with Select tag in iPad Safari

    The <select> tag which provides a drop-down list is giving me problems. I when I change the value, sometimes I get all sorts of spurious characters after the field and sometimes I get a truncated value. I need to put a span tag in front of it to get

  • JAVA Game DEV

    Does anyone know of a site which will walk a total newbie through making a very simple game in Java. It doesn't matter how crappy the game is, just something to get the newbie started. The website is for me :) Thanks, Christopher Gillis

  • Dispaly operators in JSF dropDown

    Hi , There is a requirement in my project to add and delete a row onclick of a button. Each row has a drop down which displays ("<",">","<=",">=") operators. When i am using the below HTML code for displaying dropdowns ,add and delete functionalities

  • SAP MM- Trying to send RFQ's to the vendors via email.

    Hi Experts, User is trying to send RFQs using  Email address... But user is not able to do so.... Please guide how to start with... Thanks, Forum shah

  • Adobe LifeCycle Designer funktioniert nicht mehr

    Ich habe LCS ES4 SP 1 (German) seit mehreren Monaten auf meinem Laptop (Dell E6500) mit Win 8.1 als Standalone-Version (also nur Designer für Formularerzeugung) genutzt. Seit einigen Tagen kommt beim Start gleich die Meldung "Adobe LifeCycle Designer