2013-08-16 2 views
0

내 쿼리는 다음과 같습니다 "캐나다"에서 "Ca". 어떻게해야합니까?SQL SELECT가 약어와 국가 이름을 바꾸기

+1

싶어합니까? –

+0

결과에서 @ImaneFateh 만 – AZee

+0

입니다. @Rahul Tripathi siad는 두 개의 국가 이름 만 있으면'case'를 사용하여 @Nithesh – AZee

답변

1

당신은 case를 사용할 수

SELECT o.CustomerID, null emptyColumn, o.ShipFirstName, 
     case when o.ShipCountry = 'United States' then 'US' 
     when o.ShipCountry = 'Canada' then 'CA' 
     end, 
     c.EmailAddress 
FROM Orders o, Customers c 
WHERE o.CustomerID = c.CustomerID 
+0

고맙습니다. ** 사례 **로 시도한 코드를 공유 할 수 있습니까? –

+0

예, 구문에 오류가 있습니다. 당신은 선택 진술 옆에 다른 선택의 여지가 없어서이 접근법이 여러 나라에 걸쳐 괜찮을 것이라고 생각합니까? – AZee

+0

내 대답이 도움이 되었습니까? –

2

는 국가의 큰 범위의 경우, ISO 국가 코드에 대한 검색 (for example를) 할 - 새 테이블에 데이터를하고 해당 테이블에 조인 가져 오기 .

아니면 CTE에 국가의 선택을 놓고 그 조인, 예를 들어,

WITH Countries(ISO_Code, ISO_Name) AS 
(
    SELECT 
    * 
    FROM (VALUES ('AF', 'AFGHANISTAN') 
       ,('AX', 'ÅLAND ISLANDS') 
       ,('AL', 'ALBANIA') 
       ,('DZ', 'ALGERIA') 
       ,('AS', 'AMERICAN SAMOA') 
       ,('AD', 'ANDORRA') 
       ,('AO', 'ANGOLA') 
       ,('AI', 'ANGUILLA') 
       ,('AQ', 'ANTARCTICA') 
       ,('AG', 'ANTIGUA AND BARBUDA')) nTab(nCol1, nCol2) 
) 
SELECT 
* 
FROM Countries c 
JOIN ... 
+0

네, 그게 좋은 지적이지만 유감 스럽지만 플랫폼의 제한 때문에 SELECT 문만 실행할 수 있습니다. – AZee

+0

다음 CTE를 사용할 수 있습니다 - 내 게시물을 업데이트했습니다. – HotblackDesiato

0

아래의 코드가 작동하지만 당신이 약어

와 국가 테이블의 다른 열이있는 경우, 그것은 더 좋을 것이다
select 
    case 
    When o.ShipCountry = 'UnitedState' Then 'US' 
    When o.ShipCountry = 'Canada' Then 'CA' 
    ELSE o.ShipCountry 
    End 
0

이 시도 , 당신은 데이터베이스에 교체

SELECT o.CustomerID, null emptyColumn, o.ShipFirstName, o.ShipCountry = 
CASE WHEN oShipCountry ='United States' THEN 'US' 
WHEN o.ShipCountry = 'Canada' then 'CA' END, 
c.EmailAddress 
FROM Orders o, Customers c 
WHERE o.CustomerID = c.CustomerID 
관련 문제