ahmed_sa Ответов: 0

Как написать оператора выбрать вам топ самых 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

я получаю повторил датан
я вижу повторную компанию и ревизию

0 Ответов