none
合併幾句SQL RRS feed

  • 問題

  • myTable

    ID  | name | code | statue | date

    1  | abc | 2000 | sell | 1/1/2013

    2  | abc | 2000 | buy | 1/1/2013

    3  | acde | 2000 | sell | 1/1/2013

    4  | add | 2000 | sell | 2/1/2013

    5  | add | 2000 | buy | 3/1/2013

    6  | abc | 2000 | sell | 3/1/2013

    我想將 "同名"同"日期"的資料 "改變STATUE"

    SELECT * FROM myTable AS sell
    WHERE status = 'sell';
    
    SELECT * FROM myTable AS buy
    WHERE status = 'buy';
    
    UPDATE myTable
    SET status = 'sold'
    WHERE buy.date = sell.date AND
          buy.name = sell.name;

    如何將以上的SQL 合併做一句 或有更好的做法呢

    2013年7月19日 下午 01:49

解答

所有回覆

  • 參考看看

    declare @tbl table
    (
    ID  int,
    name nvarchar(30),
    code int,
    [status] varchar(10),
    [date] date
    )

    update @tbl
    set status='sold'
    where id in
    (
    select distinct t1.id
    from
    (
    select id,name,[date]
    from  @tbl
    where status = 'sell'
    ) t1 join
    (
    select id,name,[date]
    from  @tbl
    where status = 'buy'
    ) t2
    on t1.date=t2.date
    and t1.name=t2.name
    )


    保證解答-微軟技術支援服務

    2013年7月21日 下午 10:28
    版主
  • 不曉得這樣的結果是否符合你的預期,不妨參考看看。

    declare @t table (ID  int,name varchar(50), code varchar(50), statue varchar(10), date date)
    
    insert into @t values (1,'abc','2000','sell','1/1/2013')
    insert into @t values (2,'abc','2000','buy','1/1/2013')
    insert into @t values (3,'acde','2000','sell','1/1/2013')
    insert into @t values (4,'add','2000','sell','2/1/2013')
    insert into @t values (5,'add','2000','buy','3/1/2013')
    insert into @t values (6,'abc','2000','sell','3/1/2013')
    insert into @t values (7,'acde','2000','sell','1/2/2013')
    insert into @t values (8,'acde','2000','buy','1/2/2013')
    
    select *
    from @t
    
    update @t
    set statue = a.name + '--'
    from @t a
    inner join
    (select name,date
    from @t 
    group by name,date
    having count(*) > 1) b
    on b.name = a.name
    and b.date = a.date
    
    select *
    from @t


    以上說明若有錯誤請指教,謝謝。

    | 台灣 SQL PASS 社群 | SQL PASS Taiwan

    | 歡迎參觀我的BLOG - 積沙成塔

    2013年7月22日 上午 05:14
    版主