【发布时间】: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