【问题标题】:To create a stored procedure for counting distinct values for 8 columns创建用于计算 8 列的不同值的存储过程
【发布时间】:2015-10-11 19:43:43
【问题描述】:

我有一个表格产品,其中有 8 列,我必须计算不同的值。为此,我需要创建一个存储过程。

那么,如何创建呢?

这是我为两列编写的示例:

create or replace
PROCEDURE GET_COUNT
( count_prod OUT INT,
count_partner OUT INT) IS
BEGIN
SELECT 
 count(*),
count(distinct(BUSINESS))
INTO 
count_prod,
count_partner from Product where ACTIVE Like 'Y'; 
END GET_COUNT;

这是对的还是我必须使用光标来做?

【问题讨论】:

  • 您想要每列的countdistinct values 或仅Business 列。 [假设您使用的是oracle]

标签: sql sql-server tsql stored-procedures oracle11g


【解决方案1】:

试试这个:

DECLARE @DataSource TABLE
(
    [Col01] CHAR(1)
   ,[Col02] TINYINT
   ,[Col03] CHAR(3)
);

INSERT INTO @DataSource ([Col01], [Col02], [Col03])
VALUES ('A', 1, 'AAA')
      ,('A', 1, 'AAA')
      ,('A', 2, 'AAA')
      ,('B', 1, 'AAA')
      ,('B', 3, 'AAB')
      ,('A', 3, 'ACA');

SELECT COUNT(DISTINCT [Col01]) AS [Col01Count]
      ,COUNT(DISTINCT [Col02]) AS [Col02Count]
      ,COUNT(DISTINCT [Col03]) AS [Col03Count]
FROM @DataSource;

COUNT 聚合(以及大多数聚合函数)支持 DISTINCT 子句,应该可以解决您的问题。

【讨论】:

  • @ApoorvJain 这是一个简单的演示。只需使用最后一个查询 - COUNT (DISTINCT [YourColumn]) x 8 次 :-)
  • 感谢您的帮助。我得到了所需的输出。你能告诉我如何以表格格式在邮件中发送该输出(输出在表格中并通过电子邮件发送到我的 gmail 帐户)?
  • @ApoorvJain 您应该编辑您的问题并添加新要求或提出单独的问题以获得进一步的帮助。
猜你喜欢
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 2015-04-29
  • 2012-12-17
  • 1970-01-01
  • 2021-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多