Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all 7251 articles
Browse latest View live

Долгий INSERT - можно ли оптимизировать

$
0
0
Есть база на SQL Server 2012 (build 11.0.5343). База используется в качестве DWH, данные в неё загружаю раз в сутки из рабочей базы. Заметил что insert в большую таблицу выполняется достаточно долго, решил спросить можно ли как-либо оптимизировать таблицу/базу/insert.
Сам запрос:
INSERT INTO
	dwh.dbo.FACT_Sales(
		DateID, 
		[Date], 
		DocType, 
		DocID, 
		Number, 
		ParentDocType, 
		ParentDocID, 
		BranchID, 
		BranchStorehouseID,
		BranchInstallemenID,
		StaffFirstID, 
		StaffLastID, 
		ContractorID, 
		CustomerID, 
		LegalPersonID, 
		ProjectID,
		ProductID, 
		SaleSum,
		AddServiceSum,
		ExternalServiceSum,
		InstallmentSum,
		BonusSum,
		DiscountSum,
		VendorDiscountSum,
		ProductCostSum,
		ProductCount, 
		ProductPrice, 
		ProductBasePrice, 
		PaymentSum, 
		ProductPriceChangeReasonID,
		ProductConditionID,
		_DateLoad,
		_SourceDB
	)
SELECT
	DateID, 
	[Date], 
	DocType, 
	DocID, 
	Number, 
	ParentDocType, 
	ParentDocID, 
	BranchID, 
	BranchStorehouseID,
	CASE WHEN InstallemenSum IS NOT NULL AND InstallemenSum <> 0 THEN ISNULL(BranchInstallemenID, BranchID) ELSE NULL END,
	StaffFirstID, 
	StaffLastID, 
	ContractorID, 
	CustomerID, 
	LegalPersonID, 
	ProjectID,
	ProductID, 
	ISNULL(SaleSum, 0),
	ISNULL(AddServiceSum, 0),
	ISNULL(ExternalServiceSum, 0),
	ISNULL(InstallemenSum, 0),
	ISNULL(BonusSum, 0),
	ISNULL(DiscountSum, 0),
	ISNULL(VendorDiscountSum, 0),
	ISNULL(ProductCostSum, 0),
	ISNULL(ProductCount, 0),
	ISNULL(ProductPrice, 0),
	ISNULL(ProductBasePrice, 0),
	ISNULL(PaymentSum, 0),
	ProductPriceChangeReasonID,
	ProductConditionID,
	GETDATE(),
	1
FROM
	temp_tables.dbo.FACT_Sales_Insert

Таблица:
CREATE TABLE [dbo].[FACT_Sales](
	[DateID] [int] NOT NULL,
	[Date] [datetime] NOT NULL,
	[DocType] [int] NOT NULL,
	[DocID] [binary](16) NOT NULL,
	[Number] [nvarchar](10) NULL,
	[ParentDocType] [int] NULL,
	[ParentDocID] [binary](16) NULL,
	[BranchID] [int] NULL,
	[BranchStorehouseID] [int] NULL,
	[BranchInstallemenID] [int] NULL,
	[StaffFirstID] [int] NULL,
	[StaffLastID] [int] NULL,
	[ContractorID] [int] NULL,
	[CustomerID] [int] NULL,
	[LegalPersonID] [smallint] NULL,
	[ProjectID] [int] NULL,
	[ProductID] [int] NOT NULL,
	[SaleSum] [numeric](15, 2) NOT NULL CONSTRAINT [DF_FACT_Sales_Sum]  DEFAULT ((0)),
	[AddServiceSum] [numeric](15, 2) NOT NULL CONSTRAINT [DF_FACT_Sales_ServiceSum]  DEFAULT ((0)),
	[ExternalServiceSum] [numeric](15, 2) NOT NULL CONSTRAINT [DF_FACT_Sales_ExternalServiceSum]  DEFAULT ((0)),
	[CostSum]  AS ([ProductCostSum]-[VendorDiscountSum]) PERSISTED,
	[MarkupSum]  AS ((([SaleSum]+[AddServiceSum])-[ProductCostSum])+[VendorDiscountSum]) PERSISTED,
	[InstallmentSum] [numeric](15, 2) NOT NULL CONSTRAINT [DF_FACT_Sales_InstallementSum]  DEFAULT ((0)),
	[BonusSum] [numeric](15, 2) NOT NULL CONSTRAINT [DF_FACT_Sales_BonusSum]  DEFAULT ((0)),
	[DiscountSum] [numeric](15, 2) NOT NULL CONSTRAINT [DF_FACT_Sales_ProductDiscountSum]  DEFAULT ((0)),
	[VendorDiscountSum] [numeric](15, 2) NOT NULL CONSTRAINT [DF_FACT_Sales_ProductVendorDiscountSum]  DEFAULT ((0)),
	[ProductCostSum] [numeric](15, 2) NOT NULL CONSTRAINT [DF_FACT_Sales_ProductCostSum]  DEFAULT ((0)),
	[ProductCount] [numeric](9, 0) NOT NULL CONSTRAINT [DF_FACT_Sales_ProductCount]  DEFAULT ((0)),
	[ProductPrice] [numeric](15, 2) NOT NULL CONSTRAINT [DF_FACT_Sales_ProductPrice]  DEFAULT ((0)),
	[ProductBasePrice] [numeric](15, 2) NOT NULL CONSTRAINT [DF_FACT_Sales_ProductBasePrice]  DEFAULT ((0)),
	[PaymentSum] [numeric](15, 2) NOT NULL CONSTRAINT [DF_FACT_Sales_ProductPaymentSum]  DEFAULT ((0)),
	[ProductPriceChangeReasonID] [tinyint] NULL,
	[ProductConditionID] [tinyint] NULL,
	[_DateLoad] [datetime] NULL CONSTRAINT [DF_FACT_Sales__DateLoad]  DEFAULT (getdate()),
	[_SourceDB] [tinyint] NULL
)

Таблица фактов явно связана с таблицами измерений внешними ключами (с проверкой на существование связанных элементов):
ALTER TABLE [dbo].[FACT_Sales]  WITH CHECK ADD  CONSTRAINT [FK_FACT_Sales_DIM_Branch] FOREIGN KEY([BranchID])
REFERENCES [dbo].[DIM_Branch] ([ID])
GO

ALTER TABLE [dbo].[FACT_Sales] CHECK CONSTRAINT [FK_FACT_Sales_DIM_Branch]
GO

Внешних ключей где-то 15 штук.

Всего на таблице есть 3 некластеризованных уникальных индекса и 1 кластеризованный уникальный по дате.
INSERT-ом добавляются строки за последнюю дату, в основном. Т.е., если в таблице строки до 01.07, то в insert 99% строк будет за 02.07
В таблице около 260 млн строк. Добавление 150000 строк заняло 40 минут. Другие запросы к этой таблице в это время не выполнялись.
Есть какие-либо идеи по оптимизации? Может кусочками в цикле данные добавлять? Или отсортировать их предварительно в таблице temp_tables.dbo.FACT_Sales_Insert (сейчас они расположены в произвольном порядке)?
Предварительный план insert во вложении

SSRS отчёт с drillthrough

$
0
0
Добрый день,

Долбаюсь неоправданно долго над одной проблемой. У меня отчёт (SSRS 2014 SP1) с stacked column chart. На колонке показываю значение. Сделал "Go to report" с параметрами для навигации на subreport. Добавил таблицу внизу, всё работает, параметры передаются. Проблема в том, что я хочу просто обновить таблицу под главным графиком, а оно перезагружает весь отчёт, показывая только subreport.
Если не очень понятно, то идея показать chart наверху, а внизу обновлять детальные данные в виде таблицы при клике на chart. Чтобы обновлялся только subreport.

Кто-то подобное делал? Спасибо!

help

$
0
0
Есть запрос с объединением

select zj.nzak, zj.zvet as zvetnabor,zj.ei,zj.dataz,zj.zena as zenanabor,

zj.skid,zj.dened,z.zakastik ,z.datotg,z.opl ,z.kodterr,i.izd as izd,i.kodpodr,zj.kodizd,zj.Код as kodzj, 

i.tex,zj.bron,1 as kolvx,i.izd as nabor,kodizd kodnabor, i.sp,zj.kol as kol,
zj.zvet as zvet,i.sp as spel

from zajav zj, zakas  z,izd i where zj.Код=303445and z.nzak=zj.nzak and i.Код=zj.kodizd and i.sp<>'N'
union

select  zj.nzak, zj.zvet as zvetnabor ,zj.ei,zj.dataz,zj.zena as zenanabor, 

zj.skid,zj.dened,z.zakastik ,z.datotg,z.opl ,z.kodterr,i.izd as izd,i.kodpodr,i.Код as kodizd,zj.Код as kodzj,

i.tex,zj.bron,s.kol as kolvx,i1.izd as nabor,i1.Код  as kodnabor,i1.sp,zj.kol*s.kol as kol,

 isnull(zs.zvetN,'***') as zvet,i.sp as spel

from (((( zajav zj left join zakas  z on z.nzak=zj.nzak) left join izd i1 on i1.Код=zj.kodizd)
 left join sostav s on zj.kodizd=s.kodizd) left join izd i on i.Код=s.kodvx) left join zvetsxema zs
 on (zj.kodizd=zs.kodizd and zj.zvet=zs.zvetizd and s.NzvetSX=zs.nzvetsx)

where zj.Код=303445 and s.spvx<>'M' and i1.sp='N'
order by nabor,zvetnabor, i.izd,zvet


выдает результат 21 запись
nzak	zvetnabor	ei	dataz	zenanabor	skid	dened	zakastik	datotg	opl	kodterr	izd	kodpodr	kodizd	kodzj	tex	bron	kolvx	nabor	kodnabor	sp	kol	zvet	spel
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Ар-01.00 2 11298 303445 0 1 Романа 104.10.00 11578 N 1 желтый SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Гр-01.00 2 18676 303445 0 1 Романа 104.10.00 11578 N 1 красный SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Кр-20.00 2 11308 303445 0 1 Романа 104.10.00 11578 N 1 красный SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Кр-20.00 2 11308 303445 0 1 Романа 104.10.00 11578 N 1 синий SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Лз-23.00 2 11555 303445 0 1 Романа 104.10.00 11578 N 1 желтый SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-06.00-01 2 11513 303445 0 2 Романа 104.10.00 11578 N 2 желтый SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-11.00-04 2 11817 303445 0 2 Романа 104.10.00 11578 N 2 красный SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-11.00-04 2 11817 303445 0 1 Романа 104.10.00 11578 N 1 синий SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-14.00 2 11399 303445 0 1 Романа 104.10.00 11578 N 1 желтый SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-15.00 2 11531 303445 0 2 Романа 104.10.00 11578 N 2 красный SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-15.00 2 11531 303445 0 2 Романа 104.10.00 11578 N 2 синий SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-17.00 2 11556 303445 0 1 Романа 104.10.00 11578 N 1 красный SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-19.00 2 11543 303445 0 2 Романа 104.10.00 11578 N 2 желтый SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-27.00-02 2 14583 303445 0 1 Романа 104.10.00 11578 N 1 красный SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-27.00-02 2 14583 303445 0 1 Романа 104.10.00 11578 N 1 синий SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Пл-02.00 2 10523 303445 0 4 Романа 104.10.00 11578 N 4 серый SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Пр-03.00 2 11529 303445 0 1 Романа 104.10.00 11578 N 1 стандартный SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Пр-04.00 2 11562 303445 0 1 Романа 104.10.00 11578 N 1 серый SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Романа 104.10.00 УЧ 2 15374 303445 0 1 Романа 104.10.00 11578 N 1 стандартный SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Ст-01.51 2 13934 303445 0 8 Романа 104.10.00 11578 N 8 серый SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Ст-05.50 2 14589 303445 0 8 Романа 104.10.00 11578 N 8 серый SB

Если выполняя второй запрос отдельно дает результат 22 записи

nzak	zvetnabor	ei	dataz	zenanabor	skid	dened	zakastik	datotg	opl	kodterr	izd	kodpodr	kodizd	kodzj	tex	bron	kolvx	nabor	kodnabor	sp	kol	zvet	spel
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Ар-01.00 2 11298 303445 0 1 Романа 104.10.00 11578 N 1 желтый SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Гр-01.00 2 18676 303445 0 1 Романа 104.10.00 11578 N 1 красный SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Кр-20.00 2 11308 303445 0 1 Романа 104.10.00 11578 N 1 красный SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Кр-20.00 2 11308 303445 0 1 Романа 104.10.00 11578 N 1 синий SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Лз-23.00 2 11555 303445 0 1 Романа 104.10.00 11578 N 1 желтый SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-06.00-01 2 11513 303445 0 2 Романа 104.10.00 11578 N 2 желтый SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-11.00-04 2 11817 303445 0 2 Романа 104.10.00 11578 N 2 красный SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-11.00-04 2 11817 303445 0 1 Романа 104.10.00 11578 N 1 синий SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-14.00 2 11399 303445 0 1 Романа 104.10.00 11578 N 1 желтый SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-15.00 2 11531 303445 0 2 Романа 104.10.00 11578 N 2 красный SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-15.00 2 11531 303445 0 2 Романа 104.10.00 11578 N 2 синий SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-17.00 2 11556 303445 0 1 Романа 104.10.00 11578 N 1 красный SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-19.00 2 11543 303445 0 2 Романа 104.10.00 11578 N 2 желтый SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-27.00-02 2 14583 303445 0 1 Романа 104.10.00 11578 N 1 красный SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Огр-27.00-02 2 14583 303445 0 1 Романа 104.10.00 11578 N 1 синий SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Пл-02.00 2 10523 303445 0 4 Романа 104.10.00 11578 N 4 серый SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Пр-03.00 2 11529 303445 0 1 Романа 104.10.00 11578 N 1 стандартный SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Пр-03.00 2 11529 303445 0 1 Романа 104.10.00 11578 N 1 стандартный SB

зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0
1 Пр-04.00 2 11562 303445 0 1 Романа 104.10.00 11578 N 1 серый SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Романа 104.10.00 УЧ 2 15374 303445 0 1 Романа 104.10.00 11578 N 1 стандартный SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Ст-01.51 2 13934 303445 0 8 Романа 104.10.00 11578 N 8 серый SB
зисо 26.08.2016 стандартный шт 2016-07-14 00:00:00.000 0 0.00 1 ЗАО "ЗИСО" 2016-07-12 00:00:00.000 0 1 Ст-05.50 2 14589 303445 0 8 Романа 104.10.00 11578 N 8 серый SB

Правильно 22 записи

Почему?

При первом запросе две похожие записи группирует.
Модератор: Отформатировал. На будущее: уважайте тех, у кого вы просите помощи, и хотя бы не ломайте им глаза.

Как развернуть таблицу

$
0
0
Добрый день.

Имеется таблица
[id][param][value]

требуется получить таблицу

[id][param1]..[param_до неизвестного]
[Value1]..[Value..]

Что - то на подобии Pivot, только не известны параметры и их количество, а точнее они каждый раз разные, и формируются динамически.

например
1 - Дата - 25.01.2001
1 - Время - 14:52
1 - Имя - Вася
2 - Дерево - Дуб
2 - Цвет - Зеленый
2 - Возраст - 100

При выборе должны получить

Дата-Время-Имя-Дерево-Цвет-Возраст
1 25.01.2001-14:52-Вася-null-null-null
2 null-null-null-Дуб-Зеленый-100


Если стоит условие по id то только столбцы данного ID.
Дата Время Имя
1 25.01.2001 14:52 Вася

запрос

$
0
0
Прикрепил картинку с примером таблицы. Нужно для каждого Pr взять наименьший Rn. Rn повторяться не должен

Глубина секционирования

$
0
0
Добрый день коллеги.

Подскажите пожалуйста, хочу усвоить секционирования, но не могу найти разумного объяснения, какова должна быть глубина? месяц или год, на что именно базироваться.
Моя таблица фактов:

Select  YEAR(DateDoc)  as [YEAR]
      , MONTH(DateDoc) as [MONTH]
	  , COUNT(DateDoc) as [COUNT_ROW]
From Table1
Group by YEAR(DateDoc)
       , MONTH(DateDoc) 
Order by YEAR(DateDoc)
       , MONTH(DateDoc)


+

YEAR MONTH COUNT_ROW
2007 1 302289
2007 2 311134
2007 3 282051
2007 4 284513
2007 5 288121
2007 6 273023
2007 7 321245
2007 8 426289
2007 9 357626
2007 10 386056
2007 11 337846
2007 12 333960
2008 1 356703
2008 2 394781
2008 3 336620
2008 4 342780
2008 5 313360
2008 6 319919
2008 7 384719
2008 8 464021
2008 9 485014
2008 10 426619
2008 11 334426
2008 12 388153
2009 1 372972
2009 2 395312
2009 3 383943
2009 4 392895
2009 5 350238
2009 6 418417
2009 7 495574
2009 8 627192
2009 9 621377
2009 10 560079
2009 11 529901
2009 12 592524
2010 1 444790
2010 2 517020
2010 3 554298
2010 4 496996
2010 5 463083
2010 6 516949
2010 7 532522
2010 8 737412
2010 9 711524
2010 10 634057
2010 11 627221
2010 12 667138
2011 1 589625
2011 2 635931
2011 3 647923
2011 4 621193
2011 5 609526
2011 6 611887
2011 7 641958
2011 8 909080
2011 9 857626
2011 10 732949
2011 11 764772
2011 12 782621
2012 1 707373
2012 2 786102
2012 3 762772
2012 4 689723
2012 5 704651
2012 6 663629
2012 7 766803
2012 8 941309
2012 9 843691
2012 10 818658
2012 11 773075
2012 12 790492
2013 1 786625
2013 2 801110
2013 3 708594
2013 4 743286
2013 5 660382
2013 6 659829
2013 7 828092
2013 8 982950
2013 9 969335
2013 10 942836
2013 11 845140
2013 12 921586
2014 1 829031
2014 2 857427
2014 3 772968
2014 4 814434
2014 5 740582
2014 6 735686
2014 7 909446
2014 8 1053598
2014 9 1084142
2014 10 979139
2014 11 808984
2014 12 972143
2015 1 742388
2015 2 758832
2015 3 772267
2015 4 779860
2015 5 694760
2015 6 762500
2015 7 882464
2015 8 1090699
2015 9 1123834
2015 10 998700
2015 11 928750
2015 12 1082105
2016 1 870409
2016 2 977248
2016 3 982719
2016 4 937145
2016 5 905641
2016 6 969916
2016 7 273198


исходя из таблички до какой глубины лучше секционировать данные, для снижения обработки отчетов и процессинга кубов?
в чем преимущество в нескольких файловых группах или лить в одну группу?

Выборка данных по списку целых значений, разделённых ','

$
0
0
Доброго всем времени суток!
Есть таблица, в строковом поле которой хранятся числа (натуральные), разделённые запятой.
Каким образом можно выбрать все строки этой таблицы, которые содержат хотя бы одно число из передаваемого как парамтер списка?

Ниже, задачи описание "на пальцах":
Есть поле ResourceIdsStr c такими значениями:

ResourseIDsStr
1
15,8
1,6,15
12
5


При передаче параметра
'6,7,12,15'
функции/процедуре и её выполнении, на выходе должен получится следующий набор данных

ResourseIDsStr
15,8
1,6,15
12

потому как в каждой строке результирующего набора данных присутствует хотя-бы одно число из списка, передаваемого как параметр.

Помогите составить рекурсивный запрос

$
0
0
Коллеги, помогите составить рекурсивный запрос.
Про рекурсивные CTE, конечно, читал, но составить запрос не могу. Просто не умею мыслить такими категориями.
Нужен пример и всё такое.

Есть таблица:
CREATE TABLE parent_child (
	[N] [int] IDENTITY(1,1) NOT NULL,
	[parent_id] [varchar](10) NOT NULL,
	[parent_rng] [int] NOT NULL,
	[child_id] [varchar](10) NOT NULL,
	[child_rng] [int] NOT NULL,
PRIMARY KEY CLUSTERED 
(
	[parent_id] ASC,
	[child_id] ASC,
	[N] ASC
))

INSERT INTO [parent_child]([parent_id],[parent_rng],[child_id],[child_rng]) VALUES('_1Z00JIJI2',0,'_1Z00JIJI2',0)
INSERT INTO [parent_child]([parent_id],[parent_rng],[child_id],[child_rng]) VALUES('_1Z00JIJI2',0,'_1Z00JIJI2',1)
INSERT INTO [parent_child]([parent_id],[parent_rng],[child_id],[child_rng]) VALUES('_1Z00JIJI2',1,'B1YD13B28O',0)
INSERT INTO [parent_child]([parent_id],[parent_rng],[child_id],[child_rng]) VALUES('B1YD13B28O',0,'B1YD13BVHE',0)
INSERT INTO [parent_child]([parent_id],[parent_rng],[child_id],[child_rng]) VALUES('C2780K704W',0,'C1YD128OPG',0)
INSERT INTO [parent_child]([parent_id],[parent_rng],[child_id],[child_rng]) VALUES('C2780K704W',0,'C1YD12IK1E',0)
INSERT INTO [parent_child]([parent_id],[parent_rng],[child_id],[child_rng]) VALUES('C2780K704W',0,'C2780K704W',0)
INSERT INTO [parent_child]([parent_id],[parent_rng],[child_id],[child_rng]) VALUES('E33W0L3XYY',0,'E1YD12P8FU',0)
INSERT INTO [parent_child]([parent_id],[parent_rng],[child_id],[child_rng]) VALUES('E33W0L3XYY',0,'E1YD12WA3I',0)
INSERT INTO [parent_child]([parent_id],[parent_rng],[child_id],[child_rng]) VALUES('E33W0L3XYY',0,'E1YD1312WY',0)


Пара [parent_id],[parent_rng] и [child_id],[child_rng] - это идентификаторы узлов дерева.

Корни деревьев (их множество) это узлы, в которых [parent_id]=[child_id] and [parent_rng]=[child_rng], т.е. одинаковые значения в parent и child половинках.
Дочерние узлы содержат значения [parent_id],[parent_rng] родительского узла, и [child_id],[child_rng] - своего.
Например:
('_1Z00JIJI2',0,'_1Z00JIJI2',0) - корневой узел
('_1Z00JIJI2',0,'_1Z00JIJI2',1) - дочерний
('_1Z00JIJI2',1,'B1YD13B28O',0) - "внучатый"
И т.д., вложенность около 1000

Задача:
Раскрыть дерево в таблицу "общий предок" - "текущий узел".
Т.е. должно быть:

('_1Z00JIJI2',0,'_1Z00JIJI2',0)
('_1Z00JIJI2',0,'_1Z00JIJI2',1)
('_1Z00JIJI2',0,'B1YD13B28O',0)

Я знаю, что это просто. Но не могу уложить это в голове.
Помогите!

Что за процесс с Application name "Microsoft Windows Operating System" в профайлере

$
0
0
Дорогие со-сайтники!

Отлаживаю комплекс программ удаленно по емейл. На каждое письмо уходит 2 дня.
Скажите пожалуйста, что за процесс может логинится в SQL Server (2008 R2 если важно) с видимым именем приложения в профайлере "Microsoft® Windows® Operating System".

Ответ "любое приложение" не считается. Я знаю что эта строка сугубо волатильная и клиент может вписать что угодно, но версию-диверсию пока не рассматриваю.

Что не так з запросом ?

$
0
0
Не могу понять почему в поле "NumerDocymenty" записываются все номеры документа а не только принадлижащие именно етому товару?.

SELECT  tw_Rodzaj as Rodzaj
, tw_Symbol As Symbol
, tw_Nazwa as Nazwa
--,dok_NrPelny as NumerDocymenty

, (select dok_NrPelny + ', '
from [dbo].tw__Towar  t1
INNER JOIN [dbo].dok__Dokument t2 ON t2.dok_DoDokId = t1.tw_Id and t1.tw_Symbol = tw_Symbol and t1.tw_Nazwa = tw_Nazwa 
--INNER JOIN [dbo].dok_Pozycja t3 ON t3.ob_TowId = t2.dok_Nr
--inner join dbo.tw__Towar t2 on  t2.dok_Nr = t1.tw_Id
--inner join dbo.dok_Pozycja t3 on t3.ob_DokHanId = t3.ob_TowId
--Where t1.tw_Symbol = tw_Symbol and t1.tw_Nazwa = tw_Nazwa 
For xml path ('')
)as NymerDokymentu

, SUM (ob_Ilosc* ob_znak) AS Ilosc
, tw_JednMiary as Jm
, SUM(ob_WartNetto * ob_Znak) as 'Wart.Netto'
, SUM(ob_WartBrutto * ob_Znak) as 'Wart.Brutto'
, ( SELECT SUM(st_Stan) FROM [dbo].tw_stan WHERE st_TowId = ob_TowId   GROUP BY st_TowId ) AS Stan   
, ( SELECT SUM(st_StanRez) FROM [dbo].tw_stan WHERE st_TowId = ob_TowId   GROUP BY st_TowId ) AS Rezerwacja   
, ( SELECT SUM(st_Stan - st_StanRez) FROM [dbo].tw_stan WHERE st_TowId = ob_TowId   GROUP BY st_TowId ) AS Dostepne   
FROM [dbo].dok__Dokument
INNER JOIN [dbo].dok_Pozycja ON dok_Id = ob_DokHanId 
INNER JOIN [dbo].tw__Towar ON ob_TowId = tw_Id 
WHERE (
--(dok_Status in (8))                                         
--and 
(dok_typ in (16))
) 
GROUP BY Tw_Symbol, 
tw_Nazwa, 
tw_JednMiary, 
ob_TowId, 
tw_Rodzaj
ORDER BY Symbol

Возрастает чтение на одной и той же операции в дневное время суток.

$
0
0
Доброго времени суток. Мне пожаловались на замедление операции в бизнес-приложении. Посмотрел профайлером, вызов одной и той же хранимой процедуры, днем - 150308659 Reads, вечером - 179848 Reads. Посмотрел действительный план выполнения, он идентичный, но я как понимаю, смотрел не правильно, так как запускал эту функцию через SSMS. Куда мне еще посмотреть, и от чего может быть такое возрастание ? Из-за нагрузки это вряд ли, так как она у меня и днем и вечером примерно равна.

Цикл

$
0
0
Подскажите почему у меня зацикливается цикл?

	
SET @P1 = 0
SET @P2 = 3
	
	
	WHILE @P1 < @P2
	BEGIN
		SELECT 'Привет Леша'
	END


Должен же вывести 3 раза эту запись, правильно?

PIVOT

$
0
0
Всем привет! Есть таблица:

Город Дата Значение 1 Значение2
Казань 01.06.16 11 12
Казань 01.05.16 12 13
Казань 01.04.16 13 14
Казань 01.03.16 14 15
Казань 01.02.16 15 16
Казань 01.01.16 16 17
Казань 01.12.15 17 18
Казань 01.11.15 18 19
Казань 01.10.15 19 20
Казань 01.09.15 20 21
Казань 01.08.15 21 22
Казань 01.07.15 22 23
Челны 01.06.16 23 24
Челны 01.05.16 24 25
Челны 01.04.16 25 26
Челны 01.03.16 26 27
Челны 01.02.16 27 28
Челны 01.01.16 28 29
Челны 01.12.15 29 30
Челны 01.11.15 30 31
Челны 01.10.15 31 32
Челны 01.09.15 32 33
Челны 01.08.15 33 34
Челны 01.07.15 34 35


Как превратить ее в таблицу:
Город июнь, зн 1 июнь, зн 2 май, зн 1 май, зн 2 апрель, зн 1 апрель, зн 2 и т. д.
Казань 11 12 12 13 13 14
Челны 23 24 24 25 25 26

столбцы в порядке убывания даты.
Подскажите пожалуйста))

Помогите выдернуть из ДБ

$
0
0
Вообщем суть вопроса такая есть ДБ sql в которой храниться много всякой херни лишней)
Так вот оттуда нужно выдернуть только имя фамилию и телефон клиента желательно сразу или в текстовый или в экселевский фаил) Заранее благодарен за помощь

Сброс пароля sa

$
0
0
Подскажите, пожалуйста, для MS SQL есть процедура сброса пароля администратора подобная той, что существует в mysql? Версия - MS SQL 2008. Какой вообще пароль по умолчанию для пользователя sa и где физически хранятся пароли?

Не активны Точки останова в VS 2008

$
0
0
База на SQL 2008 R2.
Открываю VS 2008, подключаю базу, открываю ХП
Хочу поставить точки останова, но не могу. Неактивны.
То есть, провести пошаговую отладку, как я это делал в VS 2005, не могу.
А ОЧЕНЬ надо.
Подскажите пожалуйста, может где то функция отладки Включается?

Можно ли найти какие хп вызывает другая хп без schemabinding?

$
0
0
Можно ли найти какие хп вызывает другая хп без schemabinding?
парсить текст по exec и execute не особо хочется)

Как в запросе можно вычислить значение поля по значению другого вычисляемого поля ?

$
0
0
Как в запросе можно вычислить значение поля по значению другого вычисляемого поля ?
типа не работающего кода:
select var1*2 as var2, 1 as var1

Естественно там будет более сложное вычисление в var1 и нежелательно его делать дважды

Msg 0, Level 11, State 0, Line 0 на таблице в 1 строкy

$
0
0
ваще оптимайзер мрет.
можно только план запросить, все одно.
Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.
Msg 0, Level 20, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.

select top 1 OBJECT_ID as o1, object_id + 1 as o2
into #t
from sys.objects;

select  
       max_o = ( select max(o)
                           from (values (o1), 
                                        (o2)
                                 )v(o)
                   ),
       case ( select max(o)
                           from (values (o1), 
                                        (o2)
                                 )v(o)
             )  
             when  o1 then 'o1'         
             when  o2 then 'o2'         
       end as col_name              
from #t;

@@version
Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (Intel X86) Aug 19 2014 12:21:07 Copyright (c) Microsoft Corporation Developer Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)

Помогите разобраться с insert bulk

$
0
0
Доброе утро !

Такая проблема.Необходимо добавить фотки (количеством примерно под 7000) в базу
данных Tbfoto.При импорте необходимо заполнять следующие поля в базе Tbfoto-
Guid-(уникальный идентификатор),Active-(значение =1),Foto-само изображение (тип поля IMG).
Viewing all 7251 articles
Browse latest View live