select BM001,BM002,BM004,BM005 from JDEBOM1
where bm001='818-1324' group by BM001,BM002,BM004,BM005
執行上面sql 得到結果:
818-1324  000094710-9422   2.31 7.36
818-1324  000094710-9422   2.31 7.36不明白爲什麽2筆相同的記錄會出現在內,經測試后發現如果除去掉BM002
select BM001,BM004,BM005 from JDEBOM1
where bm001='818-1324' group by BM001,BM004,BM005
得到的就只有一行
818-1324  2.31 7.36但是我需要BM002字段,怎麼樣避免出現重複的。
裏面空格我也核對過,都沒一樣的。
爲什麽不是一筆而是出來兩筆

解决方案 »

  1.   

    select BM001,BM002,BM004,BM005 from JDEBOM1
    where bm001='818-1324' group by BM001,BM002,BM004,BM005
    執行上面sql 得到結果:
    818-1324 000094710-9422 2.31 7.36
    818-1324 000094710-9422 2.31 7.36-------------
    应该只有一笔记录的,你贴出测试数据。
      

  2.   

    上面的sql跑出來就是2筆,
    我也納悶啊!
      

  3.   

    select BM001,BM002,BM004,BM005 from JDEBOM1
    where bm001='818-1324' group by BM001,BM002,BM004,BM005
    執行上面sql 得到結果:
    818-1324 000094710-9422 2.31 7.36
    818-1324 000094710-9422 2.31 7.36这样的查询,得出这样的结果,确实很奇怪.
      

  4.   

    我把表中這個料號的資料都貼上來給你們看,
    表JDEBOM1 
    select * from JDEBOM1 where bm001='818-1324'
    結果
    BM001          BM002          BM003     BM004    BM005
    818-1324   000094710-9422               2.31     7.36
    818-1324   000094710-9422               2.31     7.36    上面結果是原表中存在的記錄 
      

  5.   

    如果不要BM002,
    select BM001,BM004,BM005 from JDEBOM1
    where bm001='818-1324' group by BM001,BM004,BM005
    跑出來就只有一筆但是我也查看過BM002字段好像沒什麽特殊的,他們的空格也是一樣的啊。怎麼會是2筆
      

  6.   

    暈!剛又去查了下BM002字段,發現len(bm002)居然不一樣,哎,!
    眼花了。
      

  7.   

    是不是 你的2个BM002的值其实是不一样的 有特殊字符
    上次 我也是这种情况 还以为BUG
    搞半天 是数据后面多了一个 不知道是什么的空白
      

  8.   

    '000094710-9422'
    '000094710-9422  '
    BM002字段我用REPLACE(BM002, ' ', '')
    怎麼第二筆後面還有2個空格?你們的解決方法是什麽?
      

  9.   

    REPLACE(BM002, char(9), '')
    無效,還是2筆 後面的空格依然存在
      

  10.   

    REPLACE(BM002, char(10), '')
    REPLACE(BM002, char(13), '')
      

  11.   

    我只能很鬱悶的告訴你,REPLACE沒一點效果,
    '000094710-9422 ' 後面依然有空格 還是會出來2筆
      

  12.   

    如果BM002长度固定 你可以试下 left函数
      

  13.   

    BM001 nchar(50) Unchecked
    BM002 nchar(50) Unchecked
    BM003 nchar(50) Unchecked
    BM004 float         Checked
    BM005 float         Checked這是表中字段的定義
      

  14.   

    原因可能是前面有空格,加上ltrim函数,参考:
    DROP TABLE #tp
    CREATE TABLE #tp
    (
    BM001 nchar(50) ,
    BM002 nchar(50) ,
    BM003 nchar(50) ,
    BM004 float ,
    BM005 float ,
    )INSERT INTO #tp 
    SELECT '818-1324', '000094710-9422','333', 2.31, 7.36 UNION ALL
    SELECT '818-1324', ' 000094710-9422 ','333', 2.31, 7.36select BM001,ltrim(BM002)BM002,BM004,BM005 from #tp
    where bm001='818-1324' group by BM001,ltrim(BM002),BM004,BM005BM001                                              BM002                                              BM004                  BM005
    -------------------------------------------------- -------------------------------------------------- ---------------------- ----------------------
    818-1324                                           000094710-9422                                     2.31                   7.36(1 row(s) affected)
      

  15.   

    ltrim(BM002) 早用過了,一樣無效。
    bm001='818-1324'這個料號在表中的存在2筆,
    2筆的區別在與第二筆的BM002後面多2個空格,
    用REPLACE(BM002, ' ', '')或者
    ltrim(BM002)處理得到的結果都是2筆,第二筆後面還是回跟到2個空格
    第一筆'000094710-9422'
    第二筆'000094710-9422  '
    按照21樓的,我自己也建臨時表測試,是可以得到一筆,
    但如果我將JDEBOM1整個都導入到臨時表在做執行,
    從臨時表中抓到出來的還是2筆,
      

  16.   

    全部加上ltrim(),我就不信了。一个一个试试,到底看看是哪个出问题了。
    后导空格应该是没有问题的,我担心是前导空格。
    用下面这句看看是什么结果:
    select ltrim(BM001)BM001,ltrim(BM002)BM002,ltrim(BM004)BM004,ltrim(BM005)BM005 from #tp
    where bm001='818-1324' 
    group by ltrim(BM001),ltrim(BM002),ltrim(BM004),ltrim(BM005) 
      

  17.   

    UP...........
    应该有值存在差异性
    GROUP BY含有DISTINCT的效果
      

  18.   

    trim  和 REPLACE空格  应该都不会起作用的 
    我以前遇到过这种问题 使用的函数 提示是影响多少行 按理说是改过来的
    但是实际上结果还是么变
      

  19.   

    哎!只有BM002字段有問題,清除空格之後裏面還是有一筆後面2個空格就像我上面貼的。
    其他字段都沒問題,如果不是必須要BM002,我早把這個字段丟掉了。我怎麼看後面也是2個空格,有什麽特殊的地方爲什麽就是清除不掉占2個位置,select BM001,right(REPLACE(BM002, ' ', ''),4)as BM002,BM004,BM005,len(bm002) from ##tp
    where bm001='818-1324' 
    我去抓後面的4個字段,
    得到結果
    BM002
    '9422'
    '22  '這是個什麽鬼空格?