![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 小毓 ![]()
![]() |
人工報表 電腦報表 日期 數值 日期 數值 ---- ------- ------ -------- 1 33.51 1 33.2 2 40.1 1 33.9 3 44.3 1 34.0 4 20.1 2 99.6 5 10.00 2 100.0 ... 1.我要把它合併成一個資料表 2.以人工報表為主..在電腦報表取日期一樣但數值最接近的那筆資料..... 納這SQL敘述如何下
本篇文章發表於2002-08-08 09:46
|
1樓 |
有人會ㄇ
本篇文章回覆於2002-08-08 10:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓 |
前面有類似的文章
當時我說明過,可能可以解決的方法 由於接近,可以是大於,可以是小於或等於 所以你要用2個SQL sql1=select top 1 電.數 from 電,人 where 電.日=人.日 and 電.數>人.數 order by 電.數 降 sql1=select top 1 電.數 from 電,人 where 電.日=人.日 and 電.數<=人.數 order by 電.數 升 再用取出來的值相減 [人.數] 誤差值為0或最小的,就是你要的那一筆
本篇文章回覆於2002-08-08 10:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓 |
Plz Chk This Out...:)
http://www.cu29.sytes.net/討論區/board/board_content.asp?&board_id=3&title_id=1014&CONTENT_NOWPAGE=1
本篇文章回覆於2002-08-08 10:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓 |
select min(iif(電.數 < 0,電.數 * -1,電.數) + 人.數) as minvalue,電.數,人.數 from 電,人 where 電.日 = 人.日 group by 電.日
要不要試試寫成這樣子... 沒試過~ 有錯的可能很大.....
本篇文章回覆於2002-08-08 16:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓 |
呃...
更正一下... 不過還是覺得怪怪的=____= select min(iif((電.數 - 人.數) < 0,(電.數 - 人.數) * -1,(電.數 - 人.數) ) ) as minvalue,電.數,人.數 from 電,人 where 電.日 = 人.日 group by 電.日
本篇文章回覆於2002-08-08 17:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓 |
我有 try 過哦, 你試試吧....
select 日期 , 數值 , ( select Top 1 電腦報表.數值 from 電腦報表 where 電腦報表.日期 = 人工報表日期 order by ABS(電腦報表.數值 - 人工報表.數值) ) as 電腦報表近似值 form 人工報表 這是 SQL server 的.... 不知 DB2 或 Oracle 通不通, 試試吧 嗶~~~
本篇文章回覆於2002-08-08 21:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |