여기에 표시된 예제를 사용하여 임시 테이블에 값을 설정하려고합니다. SQL 출력 : 임시 출력 열을 만들 수 있습니까?
열 이름을 사용하여 값 "operdesc"의 새 열 채우기를 기반으로하는 초기 테이블을 만들었습니다.
다음은 필요한 COLUMN_NAME 값을 얻는 작업 테이블 쿼리입니다. 임시 열 "OPERAND"를 추가하고 싶습니다.
SELECT COLUMN_NAME, DATA_TYPE, 'OPERAND' AS TempField,
CASE WHEN COLUMN_NAME = 'Street' THEN '=' WHEN COLUMN_NAME = 'Town' THEN 'CW' END AS OPERAND FROM INFORMATION_SCHEMA.COLUMNS WHERE (TABLE_SCHEMA = 'dbo') AND (TABLE_NAME = 'Customers') ORDER BY COLUMN_NAME
그러나 한 단계 더 나아가 임시 조인을 사용하여 단순화하고 싶습니다. 이 예제를 따랐습니다. SQL 출력 : 임시 출력 열을 만들 수 있습니까? 하지만 내 대본에 걸려 있습니다. 이것은 내가 가지고 있지만 작동하지 않습니다.
WITH XOperLU (xopername, xoperdesc)
AS
(
SELECT xopername, CAST(xoperdesc AS VARCHAR(20))
FROM (
VALUES ('Street', 'SS'),
('Town', 'TW')
) AS XOperLU (xopername, xoperdesc)
) SELECT COLUMN_NAME as T1.COLUMN_NAME, DATA_TYPE as T1.DATA_TYPE, S1.xoperdesc AS Description FROM INFORMATION_SCHEMA.COLUMNS AS T1 WHERE (TABLE_SCHEMA = 'dbo') AND (TABLE_NAME = 'Clients')
INNER JOIN XOperLU AS S1
ON S1.xopername = T1.COLUMN_NAME;
'클라이언트'테이블은보기입니다.
미리 감사드립니다!
거의 괜찮 았지만 T1
열 대신 열 별칭에 별칭을 사용했으며 가장 중요한 것은 WHERE
이전에 사용 했던 것 JOIN
입니다. 이것은 작동합니다 :
WITH XOperLU (xopername, xoperdesc)
AS
(
SELECT xopername, CAST(xoperdesc AS VARCHAR(20))
FROM (
VALUES ('Street', 'SS'),
('Town', 'TW')
) AS XOperLU (xopername, xoperdesc)
) SELECT T1.COLUMN_NAME as COLUMN_NAME, T1.DATA_TYPE as DATA_TYPE, S1.xoperdesc AS Description FROM INFORMATION_SCHEMA.COLUMNS AS T1
INNER JOIN XOperLU AS S1
ON S1.xopername = T1.COLUMN_NAME
WHERE (TABLE_SCHEMA = 'dbo') AND (TABLE_NAME = 'Clients')
예를 들어 'XX'와 같이 설정할 설명이 지정되지 않은 다른 모든 열을 보려면 왼쪽 조인을 사용할 수 있습니다.
WITH XOperLU (xopername, xoperdesc)
AS
(
SELECT xopername, CAST(xoperdesc AS VARCHAR(20))
FROM (
VALUES ('Street', 'SS'),
('Town', 'TW')
) AS XOperLU (xopername, xoperdesc)
) SELECT T1.COLUMN_NAME as COLUMN_NAME, T1.DATA_TYPE as DATA_TYPE, ISNULL(S1.xoperdesc,'XX') AS Description FROM INFORMATION_SCHEMA.COLUMNS AS T1
LEFT JOIN XOperLU AS S1
ON S1.xopername = T1.COLUMN_NAME
WHERE (TABLE_SCHEMA = 'dbo') AND (TABLE_NAME = 'Clients')
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다