이 질문의 제목을 이해할 수 있는지는 알 수 없지만 이것이 의미하는 바입니다.SQL 쿼리에서 계산 된 열을 사용하는 방법
나는 판매 테이블을 가지고 있으며, 테이블에 "추가"테이블을 추가하여 전체 통화, 변경 비율 (다른 테이블을 구성한 것) 및 다른 통화로 표시된 총 금액을 나타내는 열을 추가해야합니다.
Invalid column name 'TotalOnLocalCurrency'.
이 질문의 제목을 이해할 수 있는지는 알 수 없지만 이것이 의미하는 바입니다.SQL 쿼리에서 계산 된 열을 사용하는 방법
나는 판매 테이블을 가지고 있으며, 테이블에 "추가"테이블을 추가하여 전체 통화, 변경 비율 (다른 테이블을 구성한 것) 및 다른 통화로 표시된 총 금액을 나타내는 열을 추가해야합니다.
Invalid column name 'TotalOnLocalCurrency'.
당신은에서 전체 식을 넣을 수 있습니다 :이 경우 가능하면, 내가이 일을 시도하지만이 오류가 발생했습니다 의미
SELECT SalesID,SalesType,SalesDate,CurrencyType,
case when CurrencyType = 1 then Total else 0 AS TotalOnLocalCurrency,
case when CurrencyType = 2 then Total else 0 AS TotalOnOtherCurrency,
(TotalOnLocalCurrency/dbo.GetCurrencyRate(SalesDate)) + TotalOnOtherCurrency) Total
FROM Sales
: 같은
그래서 내 쿼리가 보인다 이후 선, 또는 이것에 대한CROSS APPPLY
를 사용 : 귀하의 오류를 얻고있다
SELECT SalesID,
SalesType,
SalesDate,
CurrencyType,
TotalOnLocalCurrency,
TotalOnOtherCurrency,
(TotalOnLocalCurrency/dbo.GetCurrencyRate(SalesDate)) + TotalOnOtherCurrency Total
FROM Sales
CROSS APPLY (SELECT CASE WHEN CurrencyType = 1 then Total else 0) CxA(TotalOnLocalCurrency)
CROSS APPLY (SELECT case when CurrencyType = 2 then Total else 0) CxB(TotalOnOtherCurrency)
을 becau 당신은 표현 CurrencyType = 1 then Total else 0 AS TotalOnLocalCurrency
의 앨리어싱을했습니다. 동일한 select 절에서 별칭 열 이름을 참조 할 수 없으며 이는 논리적 쿼리 처리 규칙을 위반합니다. 대신 표현식 자체를 참조하거나 표 표현식의 표현식을 감싸고 표 표현식에 대해 조회하십시오.
동일한 쿼리 내에서 소개하는 열 별칭을 사용할 수 없습니다. SQL Server 2005 이상을 사용하고 있다면 CTE (Common Table Expression)를 사용하여이 문제를 해결할 것입니다.
;WITH SalesData AS
(
SELECT
SalesID, SalesType, SalesDate, CurrencyType,
TotalOnLocalCurrency = CASE WHEN CurrencyType = 1 THEN Total ELSE 0 END,
TotalOnOtherCurrency = CASE WHEN CurrencyType = 2 THEN Total ELSE END
FROM Sales
)
SELECT
SalesID, SalesType, SalesDate, CurrencyType,
TotalOnLocalCurrency, TotalOnOtherCurrency,
Total = (TotalOnLocalCurrency/dbo.GetCurrencyRate(SalesDate)) + TotalOnOtherCurrency)
FROM
SalesData
더 같은 것을 시도해보십시오
select
SalesID,SalesType,SalesDate,CurrencyType,
TotalOnLocalCurrency,TotalOnOtherCurrency,
TotalOnLocalCurrency/dbo.GetCurrencyRate(SalesDate)) + TotalOnOtherCurrency as total from
(
SELECT SalesID,SalesType,SalesDate,CurrencyType,
case when CurrencyType = 1 then Total else 0 END AS TotalOnLocalCurrency,
case when CurrencyType = 2 then Total else 0 END AS TotalOnOtherCurrency
FROM Sales) t
* 시간 * = 시간 관련, 예를 과거의 어떤 주어진 시간에 대한 사실을 재구성 할 수 있습니다. 종종 데이터에'ValidFrom/ValidTo' 열을 넣음으로써 얻을 수 있습니다. 주소가 5 년 전에 보였습니다 ... –
TotalOnLocalCurrency/dbo.GetCurrencyRate (SalesDate)에 대해 잘못 입력하지 않았습니까? 어쩌면 TotalOnLocalCurrency.dbo.GetCurrencyRate (SalesDate)? – heximal
.dbo.GetCurrencyRate (SalesDate)는이 질문에 유감스럽게도 – jcvegan