У меня есть следующая таблица:T-SQL автообъединение в сочетании с агрегатной функцией
CREATE TABLE [dbo].[Tree](
[AutoID] [int] IDENTITY(1,1) NOT NULL,
[Category] [varchar](10) NULL,
[Condition] [varchar](10) NULL,
[Description] [varchar](50) NULL,
CONSTRAINT [PK_Tree] PRIMARY KEY CLUSTERED
(
[AutoID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Данные выглядит следующим образом:
INSERT INTO [Test].[dbo].[Tree]
([Category]
,[Condition]
,[Description])
VALUES ('1','Alpha','Type 1')
INSERT INTO [Test].[dbo].[Tree]
([Category]
,[Condition]
,[Description])
VALUES ('1','Alpha','Type 1')
INSERT INTO [Test].[dbo].[Tree]
([Category]
,[Condition]
,[Description])
VALUES ('2','Alpha','Type 2')
INSERT INTO [Test].[dbo].[Tree]
([Category]
,[Condition]
,[Description])
VALUES ('2','Alpha','Type 2')
GO
Я пытаюсь сейчас сделать следующее:
SELECT Category,COUNT(*) as CategoryCount FROM Tree where Condition = 'Alpha' group by Category
Однако я также хочу получить описание для каждого элемента. Я пробовал несколько подзапросов, сам присоединяюсь и т. Д., Но я всегда сталкиваюсь с проблемой, что подзапрос не может вернуть более одной записи.
Проблема связана с плохим дизайном базы данных, который я не могу изменить, и у меня закончились идеи относительно того, как это сделать в одном запросе.
Можете ли вы привести пример того, что результирующий набор должен выглядеть? Я немного смущен необходимостью также вытаскивать описание. Похоже, вы пытаетесь объединить слишком много разных вещей в один запрос. – NotMe
Категория = 1, CategoryCount = 2, Описание = Тип 1; Категория = 2, КатегорияCount = 2, Описание = Тип 2; – NickD
Этот набор результирующих результатов, похоже, не соответствует приведенным выше образцам. Что такое предложение 1 и предложение 3? – NYSystemsAnalyst