[SQL] 다른 테이블 칼럼에 기초하여 계산 열의 수식
SQL다른 테이블 칼럼에 기초하여 계산 열의 수식
이 테이블을 고려해 c_const
code | nvalue
--------------
1 | 10000
2 | 20000
다른 테이블 t_anytable
rec_id | s_id | n_code
---------------------
2 | x | 1
목표는 다음 공식에 기초하여 계산 된 열 될 S_ID 가지고있다 :
rec_id*(select nvalue from c_const where code=ncode)
이 오류가 발생합니다 :
어떻게 입력으로 다른 테이블의 컬럼을 사용하여이 계산 된 열의 값을 계산 할 수 있습니까?
해결법
-
==============================
1.당신은이에 대한 사용자 정의 함수를 만들 수 있습니다 :
당신은이에 대한 사용자 정의 함수를 만들 수 있습니다 :
CREATE FUNCTION dbo.GetValue(@ncode INT, @recid INT) RETURNS INT AS SELECT @recid * nvalue FROM c_const WHERE code = @ncode
다음 계산 열을 정의하는 것을 사용합니다
ALTER TABLE dbo.YourTable ADD NewColumnName AS dbo.GetValue(ncodeValue, recIdValue)
-
==============================
2.이것은 (당신이 계산 된 열에서 빠른 조회를해야하는 경우, 인덱싱 된 뷰를) 더보기위한 작업이 될 것 같다 :
이것은 (당신이 계산 된 열에서 빠른 조회를해야하는 경우, 인덱싱 된 뷰를) 더보기위한 작업이 될 것 같다 :
CREATE VIEW AnyView WITH SCHEMABINDING AS SELECT a.rec_id, a.s_id, a.n_code, a.rec_id * c.nvalue AS foo FROM AnyTable a INNER JOIN C_Const c ON c.code = a.n_code
이 조인에 대해 여러 결과가있는 경우 대신 오류가 생산의 여러 레코드를 반환에있는 하위 쿼리 버전에서 미묘한 차이가 있습니다. 그러나 쉽게 c_const.code에 UNIQUE 제약 조건으로 해결되는 (나는 이미 PRIMARY KEY 용의자).
누군가가 하위 쿼리 버전보다 이해하는 것도 훨씬 쉬워졌습니다.
marc_s 표시된 것처럼 당신은 하위 쿼리 및 UDF와 함께 할 수 있지만, 그 가능성 스칼라 UDF는 행 단위를 계산해야하기 때문에, 가입 간단한에 비해 매우 비효율적 일 수 있습니다.
from https://stackoverflow.com/questions/2769007/formula-for-computed-column-based-on-different-tables-column by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 별명으로 그룹 (오라클) (0) | 2020.04.25 |
---|---|
[SQL] 스크립트 디스크에 VARBINARY 데이터를 저장하기 (0) | 2020.04.25 |
[SQL] SQL에서 임시 테이블 만들기 (0) | 2020.04.25 |
[SQL] PostgreSQL을의 범위에서 날짜 목록을 얻기 (0) | 2020.04.25 |
[SQL] SQL은 월 및 연도에 의해 그룹화 (0) | 2020.04.25 |