次のように、SQL サーバーに table1 という名前のテーブルがあります。
colA
-------
A123
Z123
C123
B123
次のように、1 つの SQL ステートメントを使用して結果を取得したいと考えています。
ID colA
--------
1 A123
2 Z123
3 C123
4 B123
colA の順序は、表の行の順序と同じです。並べ替える必要はありません。
どうやってするか??どうもありがとう
次のように、SQL サーバーに table1 という名前のテーブルがあります。
colA
-------
A123
Z123
C123
B123
次のように、1 つの SQL ステートメントを使用して結果を取得したいと考えています。
ID colA
--------
1 A123
2 Z123
3 C123
4 B123
colA の順序は、表の行の順序と同じです。並べ替える必要はありません。
どうやってするか??どうもありがとう
データを並べ替えずにID をインクリメントする必要がある場合は、次のようにします(他の行がアルファベット順でも時系列でもないため)。また、絶対に必要でない限り、一時テーブルの使用を軽蔑します。
SELECT ROW_NUMBER() OVER
(
ORDER BY (SELECT NULL)
) as ID, colA
FROM table1
ROW_NUMBER を使用した例
SELECT ROW_NUMBER()
OVER (ORDER BY colA) AS Row,
colA
FROM table1
を使用してこれを試してくださいTable variable with an Identity column
。
colA の順序は、表の行の順序と同じです。並べ替える必要はありません。
declare @t table(id int identity(1,1), colA varchar(50))
--No ordering done and the same results won't be guaranteed
insert into @t select colA from Table1
select id, colA from @T
結果:
| ID | COLA |
|----|------|
| 1 | A123 |
| 2 | Z123 |
| 3 | C123 |
| 4 | B123 |
動的順序条件が存在する場合の行番号の生成
select TotalCount = COUNT(U.UnitID) OVER() ,
ROW_NUMBER() over(
order by
(CASE @OrderBy WHEN '1' THEN m.Title END) ASC ,
(CASE @OrderBy WHEN '2' THEN m.Title END) DESC,
(CASE @OrderBy WHEN '3' THEN Stock.Stock END) DESC,
(CASE @OrderBy WHEN '4' THEN Stock.Stock END) DESC
) as RowNumber,
M.Title,U.ColorCode,U.ColorName,U.UnitID, ISNULL(Stock.Stock,0) as Stock
from tblBuyOnlineMaster M
inner join BuyOnlineProductUnitIn U on U.BuyOnlineID=M.BuyOnlineID
left join
( select IT.BuyOnlineID,IT.UnitID,ISNULL(sum(IT.UnitIn),0)-ISNULL(sum(IT.UnitOut),0) as Stock
from [dbo].[BuyOnlineItemTransaction] IT
group by IT.BuyOnlineID,IT.UnitID
) as Stock
on U.UnitID=Stock.UnitID
order by
(CASE @OrderBy WHEN '1' THEN m.Title END) ASC ,
(CASE @OrderBy WHEN '2' THEN m.Title END) DESC,
(CASE @OrderBy WHEN '3' THEN Stock.Stock END) DESC,
(CASE @OrderBy WHEN '4' THEN Stock.Stock END) DESC
offset @offsetCount rows fetch next 6 rows only