ورود

View Full Version : کسی می تونه در نوشتن یک Query به من کمک کنه



mina70
سه شنبه 01 مرداد 1387, 15:04 عصر
من یه جدول دارم به اسم Table1 که دو فیلد Code و Repeat داره می خوام بدون استفاده از Sp یا Function یک Query بزنم که جوابش مقادیر ستون Code باشه به نحوی که هر Code به تعدادی که در فیلد Repeat اومده تکرار بشه.
مثال

Code------ Repeat
A -----------3
B -----------5
C -----------2

نتیجه مورد نظر

Code
A
A
A
B
B
B
B
B
C
C

ممنون می شم اگه کسی بتونه کمکم کنه

DataMaster
سه شنبه 01 مرداد 1387, 17:30 عصر
Select Code , Count(Code) as repeat from table 1 group by code

shamsoft
سه شنبه 01 مرداد 1387, 18:30 عصر
SELECT REPLICATE(Code, Repeat) UrStr FROM Table1

رضا جاسبی
جمعه 11 مرداد 1387, 05:00 صبح
من چیزی در مورد راه حل مشکل شما ندیدم. اما هر دو راه حل ارائه شده به نظرم اشتباهه. راه حل اول از جدول 2 جدول 1 رو می سازه در حالیکه دوستمون برعکسش رو می خواست. راه دوم هم به تعداد سطرهای جدول 1 سطر داره که در هر سطر مقدار کد تکرار شده. اما دوستمون می خواد مقدار کد در سطرها تکرار بشه. یعنی نمی خواد یک سطر داشته باشه که مقدارش برابر n بار تکرار کد باشه بلکه می خواد n سطر داشته باشه که مقدار هر سطر برابر کد باشه. من بدون sp بلد نیستم.

rahmana
دوشنبه 14 مرداد 1387, 11:58 صبح
سلام
اين دستور را اجرا كن حتما جواب ميده


SELECT code, COUNT(code) AS reapeat
FROM dbo.Table1
GROUP BY code


براي انسانهاي بزرگ راه بن بستي وجود ندارد يا راهي پيدا ميكنند يا راهي ميسازند.

odiseh
دوشنبه 14 مرداد 1387, 12:16 عصر
ببخشید ولی همه راه حل هایی که دوستان ارائه کرده اند نادرست است. راه حل زیر فکر کنم جواب سوالت باشه:


createtable t1(Code char(1), Repeat int)
createtable t2(Code char(1))

declare @c char(1)
declare @r int
declare @i int
declare cu cursor
for select*from t1
open cu
fetch next from cu into @c, @r
while@@fetch_status<>-1
begin
set @i = 0
if@@fetch_status<>-2
while @i<=@r-1
begin
insertinto t2 values(@c)
set @i = @i + 1
end
fetch next from cu into @c, @r
end
close cu
deallocate cu

Masiha1986
دوشنبه 14 مرداد 1387, 12:29 عصر
با سلام
برای این کار می تونی از چنین کدی استفاده کنی:



DECLARE @Code nvarchar(255), @Repeat int
DECLARE @TempTable TABLE (Code nvarchar(255))

DECLARE RepeatCursor CURSOR FAST_FORWARD READ_ONLY FOR
SELECT Code, Repeat FROM Repeat

OPEN RepeatCursor

FETCH FROM RepeatCursor INTO @Code, @Repeat

WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @Counter int
SET @Counter = 1

WHILE @Counter <= @Repeat
BEGIN
INSERT INTO @TempTable (Code) VALUES (@Code)
SET @Counter = @Counter + 1
END

FETCH FROM RepeatCursor INTO @Code, @Repeat
END

CLOSE RepeatCursor
DEALLOCATE RepeatCursor

SELECT Code FROM @TempTable