【问题标题】:Generate DISTINCT Lists with ID T-SQL生成 ID 为 T-SQL 的 DISTINCT 列表
【发布时间】:2015-04-20 03:29:41
【问题描述】:

为了在 SSRS 多选下拉列表中使用,我需要生成多个 DISTINCT 值列表。

这很容易做到。 Select DISTINCT Department from DimEmployee

为了设置 SSRS 默认值,您的数据集中还必须有一个 ID 字段。上述查询无法实现这一点

我需要为我的不同列表中的每条记录分配一个任意唯一 ID

任何建议表示赞赏。

最终输出是:

Select * From dsDeptList

结果...

ID   |   DeptName

1    |   DeptName1
2    |   DeptName2
etc.....

【问题讨论】:

  • 您可以在DISTINCT 之后使用ROW_NUMBER SQL 函数。此外,如果这是您的 DBMS,您应该使用 sql-server 标签。
  • 这很奇怪,您可能有名为 EmployeeID 的列具有重复值。表定义是什么?
  • 员工 ID 是一个示例,我没有重复值。我需要一个(真实示例,员工部门)列表。我们没有部门表,它只与员工相关联。所以我可以获得一个不同的部门列表,但我需要为他们分配仲裁 ID

标签: tsql reporting-services ssrs-2012 distinct-values


【解决方案1】:

只需包含两次 EmployeeID 列(使用列别名)。将其用作 ID 和值。 DISTINCT 保证它在结果集中是唯一的。

【讨论】:

  • 这可行.. 但是..我现在有两列,SSRS 不会用默认值填充它。我尝试在我的 id 字段上做一个 left() 但没有运气。它必须与SSRS有关。但这确实回答了我的问题。 SSRS 问题的新问题..
  • 你能详细说明“不会用默认值填充它”吗?
  • 是的,当您为多选列表设置默认值,然后预览报告时,无需单击下拉菜单,除非更改默认值。
  • 虽然我设置了默认值,但参数不会在运行时自动选择它
  • 您确定您设置的默认值与您的查询返回的值之一(包括大小写)完全匹配吗?
【解决方案2】:

请尝试以下代码:

CREATE TABLE #Test(EmpName VARCHAR(10));

INSERT #Test VALUES('A'),('A'),('B'),('C'),('C');

SELECT DISTINCT DENSE_RANK() OVER (ORDER BY EmpName) ID,EmpName
FROM #Test;

DROP TABLE #Test;

我希望这会有所帮助。

【讨论】:

    【解决方案3】:

    我认为 GROUP BY 应该可以解决您的问题

    SELECT EmployeeID,EmpName FROM YourTable
    GROUP BY EmployeeID,EmpName
    

    你肯定会避免重复

    【讨论】:

    • 它不会消除重复的 EmpName
    • 没错,这就是我的问题。事后,我需要将新 ID 分配给我的不同列表
    猜你喜欢
    • 2011-09-20
    • 2016-07-02
    • 2020-06-01
    • 2015-06-30
    • 2020-10-28
    • 1970-01-01
    • 2017-09-21
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多