Dmitry.Savtchin
Дата: 14.09.2006 17:43:19
Такое возможно?
Имеется след 3 табл.
Список контактов.
CREATE TABLE [dbo].[ContactLists] (
[ContactListId] bigint IDENTITY(1, 1) NOT NULL,
[CustomerId] bigint NOT NULL,
[Name] nvarchar(50) ,
)
Кросик на Контакты
CREATE TABLE [dbo].[ContactListContact] (
[ContactListId] bigint NOT NULL,
[ContactId] bigint NOT NULL,
)
Контакты
CREATE TABLE [dbo].[Contacts] (
[ContactId] bigint IDENTITY(1, 1) NOT NULL,
[CustomerId] bigint NOT NULL,
[LastName] nvarchar(50) ,
[FirstName] nvarchar(50) ,
[Email] nvarchar(250) ,
[ContactStatusId] int NOT NULL,
)
Просто появилась необходимость сделать следующую выборку:
Выбрать все Списки Контактов определенного CustomerId, Вывести их название, кол-во всех контактов и кол-во контактов со ContactStatusId=3
Можно ли это сделать одним запросом ?
Заранее спасибо
ChA
Дата: 14.09.2006 19:27:56
BugsBunny |
ChA | Замени COUNT на SUM(CASE ContactStatusId WHEN 3 THEN 1 END) |
For "CASE ContactStatusId WHEN 3 THEN 1 END" it can be COUNT as well |
Извини, возможно не совсем понял фразу. Если ты про это
SELECT COUNT( CASE ContactStatusId WHEN 3 THEN 1 END)
FROM (
SELECT 0 AS ContactStatusId
UNION ALL SELECT 3
UNION ALL SELECT NULL
UNION ALL SELECT 3
) t
, то, разумеется, можно, но с SUM наглядней, IMHO, а по скорости выполнения практически то же самое.