【发布时间】:2013-11-16 02:55:56
【问题描述】:
我有一个有效的 SELECT,它返回每个公司(即订户)的信息。某些描述性数据是从“代码”表上的内部连接返回的。我的问题是如何在结果中添加一个新列,该列是属于每个订阅者的用户数的计数。用户表中的 SubscriberID 是外键:
ALTER TABLE dbo.UserInfo WITH CHECK ADD CONSTRAINT FK_UserInfo_SubscriberID
FOREIGN KEY(SubscriberID) REFERENCES dbo.Subscriber (SubscriberID)
ON UPDATE CASCADE
ON DELETE CASCADE
我在下面添加了 LEFT OUTER JOIN 和 GROUP BY,但我无法弄清楚为什么解析器会抱怨 U.SubscriberID 是无效的列名)。
SELECT SubscriberID
,SubscriberName
,DaysUntilExpired
,SubscriptionStatus SubscriptionStatusCode
, C.Description SubscriptionStatus
,U.NumberUsers
FROM dbo.Subscriber S
JOIN dbo.CodeValue C ON S.SubscriptionStatus = C.Value
JOIN dbo.CodeNamespace N ON N.ID = C.CodeNamespaceID AND N.Name = 'SubscriptionStatus'
JOIN dbo.CodeValue V ON S.NotificationStatus = V.Value
JOIN dbo.CodeNamespace X ON X.ID = V.CodeNamespaceID AND X.Name = 'NotificationStatus'
LEFT OUTER JOIN (SELECT Count(*) AS NumberUsers FROM dbo.UserInfo) AS U
ON S.SubscriberID = U.SubscriberID
GROUP BY
S.SubscriberID
,SubscriberName
,DaysUntilExpired
,S.SubscriptionStatus
,SubscriptionStatus
【问题讨论】:
-
(SELECT SubscriberID, Count(*) AS NumberUsers FROM dbo.UserInfo GROUP BY SubscriberID) AS U.
标签: sql sql-server tsql