【发布时间】:2019-02-01 14:28:38
【问题描述】:
我试图在 SQL 中返回一些值。让我们将Column A 称为UniqueIdentifier 然后我有一行列出了可以对这个唯一标识符执行的两个不同操作,我们将列称为action 和操作a 和b
每个唯一标识符的操作可以重复多次,因此会列出大量重复的UniqueIdentifier
如何获取已执行操作 a 的 UniqueIdentifier 计数和未执行操作 a 的计数?
我确实使用临时表创建了一个非常冗长且繁琐的方式(如下所列),但我觉得必须有一个更迂回的方式
<!-- language: lang-sql -->
select
UniqueIdentifier
,case when action = 'a' then 1 else 0 end [actionflag]
into #actionflags
from mydatabase
select
distinct UniqueIdentifier
,sum(actionflag)
into #actionflagscount
from #actionflags
group by UniqueIdentifier
select case when actionflag > 0 then 1 else 0 end [actionflag]
,count(uniqueidentifier)
from #actionflagscount
group by case when actionflag > 0 then 1 else 0 end
【问题讨论】:
-
你能发布表格的 (
database?) 定义吗?它并不觉得UniqueIdentifier在这里是独一无二的,但也许(UniqueIdentifier, action)会是。另外,你能指定你正在使用的 DBMS 吗? -
唯一标识符是唯一的,但它会重复,因为该操作可以对其执行多次,即 IE,对一个唯一标识符执行 30 种不同的操作我正在使用 SQL Server 2014 我想
-
这基本上就是我所说的不是独特的。请,我真的需要信息,发布表格的定义
-
您可以将我的表视为一种活动日志,其中唯一标识符可以在不同时间多次执行该操作,然后将其记录下来。
-
您将来需要做的是在您的问题中发布
create table。对于这里的许多贡献者来说,准确了解应用于表的约束至关重要,即使它只是您正在构建的测试用例,而不是您对约束的潜在错误理解。无论如何,我已经尝试根据我的理解自己给出答案,看看它是否涵盖了你想要得到的。
标签: sql sql-server