با عرض سلام خدمت اساتید محترم
من یک جدول دارم با ساختار زیر
CREATE TABLE [dbo].[Report4](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Mesc] [nvarchar](50) NOT NULL,
[Line] [char](1) NOT NULL,
[Unit] [varchar](4) NOT NULL,
[Description] [varchar](200) NOT NULL,
[ST_CODE] [char](1) NULL,
[PbsNo] [varchar](20) NULL,
[PbsDate] [varchar](10) NULL,
[PbsQty] [int] NULL,
[PbsQtyRec] [bigint] NULL,
[QtyConsum1] [int] NULL,
[QtyConsum2] [int] NULL,
[QtyConsum3] [int] NULL,
[QtyConsum4] [int] NULL,
[QtyConsum5] [int] NULL,
[Type] [nvarchar](20) NULL,
[InvQty] [int] NOT NULL,
[TypeRequest] [int] NOT NULL,
[HeaderId] [bigint] NOT NULL,
[LOCATION] [varchar](50) NULL,
CONSTRAINT [PK_Report4] 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]
) ON [PRIMARY]
GO
که داده های این جدول نزدیک به 2000000 رکورد است و من می خواهم یک Query بنویسم منطق زیر را ایجاد کنم.(من یک مثال از این جدول را اینجا قرار دادم)
در این جدول یک سری رکورد وجود دارد با Line='H' , Line='I'.
که در اینجا منظور از h هدر است و منظور از I ، آیتم های هدر می باشند(این یک سیستم کالا است ابتدا با استفاده از هدر مشخصات کالا را بیان می کند و I مشخصات آیتم ها را مشخص می کند)
در این جدول برای اینکه هدرها را آیتم ها را مشخص کنم یک فیلد با عنوان HeaderId قرار دادم که مشخص می کنیم که این آیتم ها متعلق به کدام هدر هستند
22.jpg
در عکس بالا اگر به رکورد 11 دقت کنید مقدار فیلد HeaderId برابر 134228000. این بدین معنا است که هدر این ایتم کد 134228000 (منظور از کد فیلد Mesc است)
حال می خواهم زمانی که داد ها را به کاربر نشان دهم داده ها جوری پشت سر هم قرار گیرند که ابتدا هدر های آیتم ها وبعد از آن خود آیتم ها قرار گیرند مانند عکس زیر
22.jpg
و این sp باید قابلیت این رو داشته باشه که به صورت داینامیک باشه(چون کاری که الان من دارم انجام میدم یه جوری گزارشگیری است) یعنی اینکه من بتونم یک شرط برای این SP خودم بفرستم مثلاً اگر من این شرط را به این Sp ارسال کردم(این نمونه است می تونه هر شرط دیگری هم باشد)
Description like'% pump%'
زمانی که این شرط را بخواهم اعمال کنم باید شرایط زیر را در نظر بگیرد
1. ممکن است که کلمه pump در رکوردهای با Line=H باشد
در این صورت هدرها و تمام آیتم های آن هدر را باید لیست کند
2. ممکن است که کلمه pump در رکوردهای با Line=I باشد
در این صورت آن آیتم و تمام هدرهای آن آیتم را باید لیست کند مانند زیر
333.jpg
اگر به سطر 7 دقت کنیم ایتم های با هدرهایی را لیست می کند که هر دو شرط بالا را داشته باشندو
ممنون میشم اساتید محترم راهنمایی کنند