【发布时间】:2021-06-14 23:05:33
【问题描述】:
当我使用 UNION 加入时,我目前在 2 个地方获得了类似的物品。
我想要的是它应该总结并显示相似项目的单个项目。
这是我的查询
select
(Case
When DHB = 'ABC.com' Then 'ABC Hospital'
When DHB = 'AOC.com' Then 'ABC Hospital'
When DHB = 'coe.com' Then 'EFG Hospital'
End) DHB
, count(*) NumberOfActiveUsers from (
select distinct Ltrim(Rtrim(substring(userid, charIndex('@', userId)+1, Len(userId)))) as DHB, userId from [RecordDB].[dbo].Event ae
where userId like '%@%'
) as Temp
where DHB in ('ABC.com','AOC.com','coe.com')
group by DHB
UNION
select distinct DHB,
count(userid) NumberOfActiveUsers from (
SELECT DISTINCT userid,
CASE WHEN DHB in ('2.1','ABC001') THEN 'ABC Hospital'
WHEN DHB in ('3.1','CDE001') THEN 'EFG Hospital'
ELSE DHB END
FROM
(
SELECT
userid,
CASE
WHEN CHARINDEX('-', e.name) > 0
THEN Ltrim(Rtrim(substring(e.name,0, charIndex('-', e.name))))
ELSE e.name
END as DHB
FROM
[RecordDB].[dbo].Event ae
JOIN
[Portal].[dbo].cUser cu ON cu.name = ae.userID
JOIN
[Portal].[dbo].UAttribute ua ON ua.cUser = cu.uniqueId
JOIN
[Portal].[dbo].[EIdentifier] ei ON ei.cUser = cu.uniqueId
JOIN
[Portal].[dbo].[EIdentifierType] e ON e.uniqueId = ei.externalIdentifierType
WHERE
(e.name LIKE '%ABC001%' OR e.name LIKE '2.1' or e.name LIKE '%CDE001%' OR e.name LIKE '3.1')
) as aa
)as Temp2
group by DHB
输出
DHB NumberOfActiveUsers
ABC Hospital 2
ABC Hospital 5
EFG Hospital 3
EFG Hospital 8
预期的输出应该是
DHB NumberOfActiveUsers
ABC Hospital 7
EFG Hospital 11
【问题讨论】:
-
添加一个具有分组依据的外部查询查询。
-
嗨@DaleK,你能告诉我怎么做吗?谢谢
-
仅供参考:
DISTINCT不会提供所需的结果,因为您需要SUM。因此使用GROUP BY。 -
@DaleK,非常感谢您的宝贵指导!我现在让它工作了。
-
@DaleK,我做了
select DHB, SUM(NumberOfActiveUsers ) NumberOfActiveUsers from(...)t group by DHB。
标签: sql sql-server tsql union