【问题标题】:remove SQL duplicate values, distinct not working删除 SQL 重复值,不同的不工作
【发布时间】:2015-03-21 04:49:36
【问题描述】:
SELECT BM.PUser, 
   BM.Desc, BM.Price, 
   BM.Info,
   CAST (CASE 
      WHEN BI.Closed = 'E' then BQ.Qty-BQ.Consign-(SUM(BD.QtySold))
      ELSE BQ.Qty-BQ.Consign
   END as int) as Stock
FROM BINVOICE BI
 , BDETAIL BD
 , BQTY BQ
 , BMASTER BM
WHERE (BD.User = BI.User)
   AND 
  (BQ.PartNo = BD.PartNo)
   AND
  (BQ.PartNo = BM.PartNo)
   AND
  (BM.Price > 0.01)
   AND
  (BM.Active = 'Y')
GROUP BY BM.PUser, BM.Price,
     BM.Desc, BM.Info, 
     BQ.Consign, BQ.Qty,
     BI.Closed

我的问题是我希望每个 PUser 只显示一个,但其中一些出现多次。我相信我所做的 CASE 就是它们的来源。我不太确定如何解决这个问题。使用 SELECT DISTINCT 对我不起作用。任何指导将不胜感激。它用于 NexusDB。

【问题讨论】:

  • 显示您尝试过的带有“distinct”选择的代码
  • 我只是你想要“不同”的 PUser,那么这是你应该在 GROUP BY 中指定的唯一列! (选择列表中的所有其他列都应该是聚合函数的参数。)
  • Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI JOIN 语法-92 SQL 标准(20 多年前),不鼓励使用它
  • 我使用的是旧版本的 reportbuilder,因为这是我提供的。它基本上要求我拥有组中的所有东西,如果我把它们中的任何一个拿出来都行不通。我用逗号分隔表格的方式也是如此。

标签: sql unique distinct nexusdb


【解决方案1】:

使用不同的 SELECT DISTINCT column_name,column_name FROM table_name;

SELECT Distinct  BM.PUser, 
   BM.Desc, BM.Price, 
   BM.Info,
   CAST (CASE 
      WHEN BI.Closed = 'E' then BQ.Qty-BQ.Consign-(SUM(BD.QtySold))
      ELSE BQ.Qty-BQ.Consign
   END as int) as Stock
FROM BINVOICE BI
 , BDETAIL BD
 , BQTY BQ
 , BMASTER BM
WHERE (BD.User = BI.User)
   AND 
  (BQ.PartNo = BD.PartNo)
   AND
  (BQ.PartNo = BM.PartNo)
   AND
  (BM.Price > 0.01)
   AND
  (BM.Active = 'Y')
GROUP BY BM.PUser, BM.Price,
     BM.Desc, BM.Info, 
     BQ.Consign, BQ.Qty,
     BI.Closed

【讨论】:

  • @utility 可能没有正确使用
猜你喜欢
  • 2017-10-15
  • 2022-09-26
  • 1970-01-01
  • 1970-01-01
  • 2013-12-03
  • 2016-05-09
  • 1970-01-01
  • 2019-06-30
  • 2015-03-22
相关资源
最近更新 更多