Как написать оператора выбрать вам топ самых 10000 на счет от табличных частей.сертификат RoHS на основе revision_id ?
Я работаю на sql server 2012, и мне нужно получить top 10000 revision_id и подсчитать части, связанные с тем, что имеют самые высокие части из частей.Сертификат RoHS ?
эта таблица содержит миллион строк деталей, но детали повторяются .
так что мне нужно подсчитать части, связанные с каждой ревизией, а затем получить топ-10000 подсчетов
Result Expected revision_ID COUNTPARTS COMPANY 1 30 KMCOMPANY 2 20 WANDERCOMPANY 3 18 WILIAMCOMPANY
CREATE TABLE [Parts].[ROHS]( [ID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, [ZPartID] [int] NULL, [Revision_ID] [bigint] NULL, PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ==================== CREATE TABLE [Parts].[Nop_Part]( [PartID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, [PartName] [nvarchar](70) NOT NULL, [CompanyID] [int] NOT NULL, CONSTRAINT [PK_Nop_Part] PRIMARY KEY CLUSTERED ( [PartID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ============= CREATE TABLE [Parts].[Company]( [CompanyID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, [CompanyName] [nvarchar](70) NOT NULL, CONSTRAINT [PK_Company] PRIMARY KEY CLUSTERED ( [CompanyID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
Что я уже пробовал:
select distinct top 10000 Revision_ID,count( ZPartID)as CountParts into #temprev from [Parts].[ROHS] r group by Revision_ID having count( ZPartID)>1 ORDER BY CountParts DESC select distinct v.Revision_ID,CountParts,c.CompanyName from #temprev v inner join [Parts].[ROHS] r on v.Revision_ID=r.Revision_ID inner join [Parts].[Nop_Part] p on p.PartID=r.ZPartID inner join [Parts].[Company] c on c.CompanyID=p.CompanyID order by CountParts desc
ahmed_sa
примерные данные к ожидаемому результату
revision_ID COUNTPARTS COMPANY
1000 3 КМКОМПАНИЯ
2000 2 WANDERCOMPANY
3000 1 WILIAMCOMPANY
части.сертификат RoHS
zprtid forign ключ для таблицы [детали].[Nop_Part]
идентификатор zpartid revisionid и
9000 2 1000
9001 90 1000
9002 50 1000
9003 70 2000
9004 75 2000
9005 40 3000
[Комплектующие].[Nop_Part] представляют основные части
партид не повторяется
PartID PartName CompanyID
2 транс 10
90 резис 10
50 динамик 10
70 экрана 40
75 ЖК-дисплей 40
40 преобразователь 70
CompanyID "Название"
10 КМКОМПАНИЯ
40 WANDERCOMPANY
70 WILIAMCOMPANY
Herman<T>.Instance
Почему вы используете для этого временную таблицу? Я не понимаю вашего выбора.
ZurdoDev
Что не так с первым оператором SQL? Только не кладите его в временную таблицу.
ahmed_sa
я получаю повторил датан
я вижу повторную компанию и ревизию