2 개의 다른 공급 업체 응용 프로그램에서 잠재적으로 일치하는 데이터를 표시해야합니다. 사용자가 비교할 수 있도록 데이터를 스택해야합니다. 그러면 일치 항목을 수락하거나 거부 할 수 있습니다. 이렇게하려면 성 (姓), 대문자, 시스템 순으로 대문자로 주문하고 싶습니다. 따라서 SH 시스템의 레코드는 PR 시스템 레코드 바로 앞에 나타납니다. select가 훌륭하게 작동합니다. 제 문제는 order by 절입니다. 내가유니온을 할 때 ORDER BY 작업을 수행 할 수 없습니다.
ORDER BY LName, FName, BkNum,RecordType DESC
의 'BY ORDER'은을 사용하는 경우 I 행 3과 4가 잘못된 순서로되어
RecordType LName FName BkNum PIN
SH SANCHEZ MICHAEL 1600010808 54727
PR SANCHEZ MICHAEL 1600010808 54727
PR Suarez Isaiah 1600010838 30019800
SH SUAREZ ISIAIAH 1600010838 30019800
SH SYKES ROBERT 1600010831 588572
PR SYKES ROBERT 1600010831 588572
공지 얻을. 나는 아래의 (본 게시물에 대한 간체) 쿼리를 사용하고 싶지만 내가 할 때, 나는 메시지,
Msg 207, Level 16, State 1, Line 53
Invalid column name 'LName'.
Msg 104, Level 16, State 1, Line 53
ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator.
내가 CASE 문에서 'UPPER'을 제거하는 시도를 얻을뿐만 아니라 추가 ' UPPER '를 위의 단순화 된 ORDER BY 문으로 수정하십시오. 난 항상 같은 오류 메시지가 나타납니다. 저는 MS SQL 2012에 있습니다. 내가 뭘 잘못하고 있니? 시간과 통찰력에 미리 감사드립니다!
DECLARE @FromDate DATETIME, @ToDate DATETIME, @TempSortOrder char(2)
-- For testing
SET @FromDate = CAST('07-12-2016' as DATETIME)
SET @ToDate = CAST('07-13-2016' as DATETIME)
SET @TempSortOrder = '1A'
SELECT 'SH' AS RecordType,
ISNULL(LastName,'') AS LName,
ISNULL(FirstName,'') AS FName,
SH.BkNum AS BkNum,
SHCX.PIN AS PIN
FROM BkSher AS SH
JOIN BkSherCase AS SHCX ON SH.BkNum = SHCX.BkNum
WHERE SH.ArrDate BETWEEN @FromDate AND @ToDate AND SH.LastName like 'S%'
UNION
SELECT 'PR' AS RecordType,
ISNULL(OffLastName,'') AS LName,
ISNULL(OffFirstName,'') AS FName,
SHCX.BkNum AS BkNum,
CX.PIN AS PIN
FROM BkCase AS CX
JOIN BkSherCase AS SHCX ON CX.PIN = SHCX.PIN
JOIN BkSher AS SH ON SH.BkNum = SHCX.BkNum
WHERE SH.ArrDate BETWEEN @FromDate AND @ToDate AND SH.LastName like 'S%'
ORDER BY
CASE WHEN @TempSortOrder = '1A' THEN UPPER(LName) END ASC,
CASE WHEN @TempSortOrder = '1A' THEN UPPER(FName) END ASC,
CASE WHEN @TempSortOrder = '1A' THEN RecordType END DESC,
CASE WHEN @TempSortOrder = '1D' THEN LName END DESC,
CASE WHEN @TempSortOrder = '1D' THEN FName END DESC,
CASE WHEN @TempSortOrder = '1D' THEN RecordType END DESC
왜 행 3과 4의 순서가 잘못 되었습니까? 그들은 나에게 잘 보인다. 당신은 '이사야'대'이셔야 '를 알았습니까? 제 2의 추가 I를 보라? – sstan
잠깐, 무슨 오류 메시지가 나옵니까? 실제로 * 오류 메시지를 * 나열하지 않기 때문에 ... –
대소 문자를 구분하지 않는 정렬에서 UPPER 또는 LOWER에 의한 정렬은 모든 문자열이 동일하므로 도움이되지 않습니다. 이를 수행하기 위해 정렬 술어에 컬럼 레벨 조합이 필요합니다. –