【问题标题】:Rows being multiplied by number of results行数乘以结果数
【发布时间】:2013-03-21 05:17:04
【问题描述】:
SELECT  s.SR_Service_RecID    -- will have 1 result
     ,  p.Description         -- will have 8 results 
     ,  t.notes               -- will have 5 results

FROM SR_Service s
     LEFT JOIN IV_Product p
            ON p.SR_Service_RecID = s.SR_Service_RecID
     LEFT JOIN Time_Entry t
            ON t.SR_Service_RecID = s.SR_Service_RecID

此查询将 p.Description 乘以 t.Notes 以获得总行数。每个 p.Description 针对每个单独的 t.notes 显示 5 次。

结果集:

SR_RecID    Description    Notes
12345       Product 1      Note 1
12345       Product 1      Note 2
12345       Product 1      Note 3
12345       Product 1      Note 4
12345       Product 1      Note 5
12345       Product 2      Note 1
12345       Product 2      Note 2
12345       Product 2      Note 3
12345       Product 2      Note 4
12345       Product 2      Note 5
Etc..

我不确定如何解决这个问题...任何帮助将不胜感激。

[编辑]: 由于结果是正确的,如何将其放入 SSRS 报告中以仅显示正确数量的结果,因为它将显示所有重复的行?

SR_RecID
12345

Description
Product 1
Product 2
Product 3
Product 4
Product 5
Product 6
Product 7
Product 8

Notes 1
Notes 2
Notes 3
Notes 4
Notes 5

【问题讨论】:

  • 查询正常,你想要什么??
  • 这就是你的查询应该做的,你想要什么?透视结果?
  • 显然,对于每一个SR_RecID,都有几个产品和几个注释——那么你到底想要什么?您查询的输出看起来像我期望的结果......
  • 您想要以下哪些值:注 1、注 2、注 3、注 4 或注 5?
  • 谢谢大家,这证实了我。由于我对此还是很陌生,因此我不确定这是否正确,因为它似乎是重复的信息。

标签: sql tsql sql-server-2008-r2 ssrs-2008


【解决方案1】:

如果通过“解决”您的意思是如何为每个 SR_RecIDDescription 仅选择 1 个注释,那么您需要使用聚合函数(MAXMIN)为每个注释仅选择 1 个 Notes , ETC。)。

否则,正如多次评论的那样,您的结果就是预期的结果。

【讨论】:

  • 谢谢,但在这种情况下,我需要所有结果。
猜你喜欢
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
  • 2019-03-12
  • 2023-02-26
  • 1970-01-01
  • 2019-06-09
相关资源
最近更新 更多