2014-11-14 2 views
-2

테이블의 모든 행에 대한 주문 정보가 필요합니다. 다음은 나의 테이블이다. ID 열은 ID 및 기본 키입니다. 주문 열은 id 열에서 계산됩니다.SQL 서버에서 주문 열을 만드는 방법

ID  --  Name  --  Order 
    1    kiwi    1 
    2    banana   2 
    3    apple    3 

모든 것이 좋으며 주문 열이 있습니다. 그러나 나는 열의 순서를 바꿀 수 없다. 예를 들어, 지금부터 키위의 순서가 2가되고 바나나의 순서가 1이됩니다. 즉, 계산 된 열을 업데이트하면 문제가 해결 될 수 있습니다.

계산 열로 주문 열을 만들지 않으면 모든 새로운 항목에 대해 가장 큰 주문을 계산해야하므로 새 항목의 주문에 대해 (최대 주문) + 1을 쓸 수 있습니다. 하지만 비용이 많이 들기 때문에 모든 항목에 대해 최대 개수를 계산하지 않습니다.

그럼 이제 어떻게해야합니까?

저는 검색을하고 해결책을 찾았는데 트리거 기능을 만드는 등 발견했습니다. 나는 그렇게하고 싶지 않습니다.

+0

"계산 된 열을 업데이트하면 ID 열에서 계산 된 주문 열을 만들 수 있고 문제가 해결 될 수 있습니다."그 의미는 무엇입니까? 왜'order'-column을 업데이트 할 수 없습니까? ' –

+0

열은'ID 'IDENTITY입니까? –

+0

귀하의 이름 열에 따라 (가장 큰 주문) + 1 AS로 다음 주문을 받거나 전체 주문 열에서 가장 큰 주문을 얻으시겠습니까? –

답변

2

나는 그 질문을 이해하지 못했을 것입니다 - 나는 그 것이 아주 분명하다고 생각하지 않습니다.

하지만 왜 세트를 주문하는 데 카운터를 사용하면 각 주문에 대해 타임 스탬프를 사용하고 어떤 주문이 ​​최근 주문인지를 알 수 없습니까?

CREATE TABLE dbo.Test (
         ID INT IDENTITY(1,1), 
         Name varchar(50), 
         OrderTime Datetime 
        ) 

INSERT INTO dbo.TEST (Name,OrderTime) 
VALUES ('kiwi',Getdate()) 

SELECT * 
FROM dbo.TEST 
ORDER BY OrderTime 

rownumber 함수를 사용하여 반환 할 주문 시간을 기준으로 정수가 필요한 경우;

SELECT *, 
     ROW_NUMBER() OVER (ORDER BY OrderTime Desc) as OrderInt 
FROM dbo.TEST 
관련 문제