获取单列中不同数据的计数

时间:2017-12-04 04:48:08

标签: sql sql-server tsql sql-server-2012 sql-server-2014

我正在办公桌"激活"列帐户ID 电子邮件产品名称

产品名称列的数据如下所示

 Platform
 Access
 Onboard
 OnGuard
 Platform
 Access
 Onboard
 OnGuard

当用户激活时,我们会将数据插入像这样的集合(平台      ,访问      ,在船上      ,的OnGuard) 如果用户插入多个(平台,访问,板载,OnGuard)

,我需要向用户发出警告

我可以获得单个产品名称插入的计数(平台或访问),但我需要在这里获得单集插入的计数..

请问任何人请帮忙查询如何获取单集插入的计数,我使用sql server作为这些插入的数据库。

非常感谢...

更新

很抱歉混淆我需要向用户发出警告,如果他多次插入集合中定义的任何产品名称而不是单个集合

2 个答案:

答案 0 :(得分:0)

假设唯一的产品数量为4,您可以使用汇总和having进行检查。

select accountid
from activation
group by accountid
having count(distinct productname) = 4

或者您可以根据需要撤消逻辑(如果您希望通过将=更改为<>来获取未定义所有产品的用户

<强> DEMO

答案 1 :(得分:0)

您可以在触发器中使用此功能。

DECLARE @Product_Name NVARCHAR(50)
IF EXISTS (SELECT 1
            FROM Activation WHERE productname = @Product_Name) BEGIN

    RAISERROR ('Product Name  Already Exists', 16, 1)

END