none
Access SQL語法轉 T-SQL RRS feed

  • 問題

  • 大家好:

         因為對T-SQL不熟 ,所以想麻煩大家幫忙想想看. 以下SQL1是可在Access中執行的SQL語法 ,想轉成SQL 2000可用的語法 , 我自己試過SQL2 , 但不行.

    TTT這張table有 item  count  count三個欄位 , AAA這張來源表有item path兩欄位 , 這個語法是要把相同item及path者算成一筆 , 並計算其次數寫到TTT中的count欄位 , 我覺得問題應該是在count(*)這部份 . 感謝參與回應者.

    SQL1 = "INSERT INTO TTT SELECT item AS item, count(*) AS [count], path AS path FROM AAA GROUP BY item, path  ORDER BY item"
           

    SQL2 = "INSERT INTO TTT SELECT (item, count(*) as [count] , path) FROM AAA GROUP BY item, path  ORDER BY item"

    2011年6月14日 上午 09:07

解答

  • declare @TTT table
    (
     [item] varchar(10)
    ,[count] int
    ,[path] varchar(10)
    )
    
    declare @AAA table
    (
     [item] varchar(10)
    ,[path] varchar(10)
    )
    
    insert into @AAA values('1','11')
    insert into @AAA values('1','11')
    insert into @AAA values('1','111')
    insert into @AAA values('2','22')
    insert into @AAA values('2','22')
    insert into @AAA values('3','3')
    
    insert into @TTT
    select item,[path],COUNT(*) as [count]
    from @AAA
    group by item,path
    
    
    select *
    from @TTT
    



    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    • 已提議為解答 91MVP 2011年9月21日 下午 03:59
    • 已標示為解答 jeff-huangch 2011年9月22日 上午 11:46
    2011年6月14日 上午 09:28
  • 試出來了 , 去掉select內的()即可 , 謝謝TerryChuang的提示

    SQL2 = "INSERT INTO TTT SELECT ( item, count(*) as [count] , path FROM AAA GROUP BY item, path  ORDER BY item"

    正確語法如下:

    INSERT INTO TTT SELECT item, count(*) as [count] , path FROM AAA GROUP BY item, path  ORDER BY item

    • 已標示為解答 jeff-huangch 2011年6月14日 上午 11:31
    • 已取消標示為解答 jeff-huangch 2011年9月22日 上午 11:46
    • 已提議為解答 91MVP 2011年9月22日 下午 12:12
    • 已標示為解答 小朱MVP, Moderator 2011年9月22日 下午 01:46
    2011年6月14日 上午 11:31

所有回覆

  • declare @TTT table
    (
     [item] varchar(10)
    ,[count] int
    ,[path] varchar(10)
    )
    
    declare @AAA table
    (
     [item] varchar(10)
    ,[path] varchar(10)
    )
    
    insert into @AAA values('1','11')
    insert into @AAA values('1','11')
    insert into @AAA values('1','111')
    insert into @AAA values('2','22')
    insert into @AAA values('2','22')
    insert into @AAA values('3','3')
    
    insert into @TTT
    select item,[path],COUNT(*) as [count]
    from @AAA
    group by item,path
    
    
    select *
    from @TTT
    



    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    • 已提議為解答 91MVP 2011年9月21日 下午 03:59
    • 已標示為解答 jeff-huangch 2011年9月22日 上午 11:46
    2011年6月14日 上午 09:28
  • 試出來了 , 去掉select內的()即可 , 謝謝TerryChuang的提示

    SQL2 = "INSERT INTO TTT SELECT ( item, count(*) as [count] , path FROM AAA GROUP BY item, path  ORDER BY item"

    正確語法如下:

    INSERT INTO TTT SELECT item, count(*) as [count] , path FROM AAA GROUP BY item, path  ORDER BY item

    • 已標示為解答 jeff-huangch 2011年6月14日 上午 11:31
    • 已取消標示為解答 jeff-huangch 2011年9月22日 上午 11:46
    • 已提議為解答 91MVP 2011年9月22日 下午 12:12
    • 已標示為解答 小朱MVP, Moderator 2011年9月22日 下午 01:46
    2011年6月14日 上午 11:31
  • 試出來了 , 去掉select內的()即可 , 謝謝TerryChuang的提示

    SQL2 = "INSERT INTO TTT SELECT ( item, count(*) as [count] , path FROM AAA GROUP BY item, path  ORDER BY item"

    正確語法如下:

    INSERT INTO TTT SELECT item, count(*) as [count] , path FROM AAA GROUP BY item, path  ORDER BY item

    抱歉,我看不出來您最後試出來的結果跟Terry大的有什麼不一樣,

    為什麼最後您會標自己解答,而沒有標Terry解答。


    常用資源參考:
    小弟的blog: In 91,wiki: my wiki
    2011年9月21日 下午 03:59
  • 這篇時間已久 , 當初的標示應該只是為了與此版讀者分享只是差 括符 的問題 , terrychuang所提的部份我並沒有測過 , 不曉得對不對 , 但他確實啟發我發現問題 , 所以當初的決定應該是如此 .不曉得這樣是否影響terrychuang的權益.這個版幫助我學習許多 , 將自已post的文章標示為解答純脆是為了讓其他讀者了解這題的解答情況 , 無意掠美 , 91(MVP)的疑問也讓我再詳看一篇terrychuang 所post的語法 , 點出差在 括符 這一點應該是重點 ,但我願意從善如流 , 更改標示正確解答.

    2011年9月22日 上午 11:45
  • 其實您也沒需要把自己的解決方式取消解答囉,我只是單就討論串來看,Terry的solution跟您的solution其實是一致的。

    所以兩個都是答案,這是沒問題的 :)

    就如同您所說的,Terry的語法就差在括號的部分,進而解決了您的問題。既然是key point,還是會建議您鼓勵一下協助發問者解決的人,這樣風氣才會正向循環囉。


    常用資源參考:
    小弟的blog: In 91,wiki: my wiki
    2011年9月22日 下午 12:16