Hi @kirankumar-3620
Expected Output : All the columns from Table B and an extra column as Flag with TRUE/FALSE in it.
Sorry, I don't think the output you want is logical, if there's only one extra flag column.
Please check the following two kinds of outputs which might be more logical.
CREATE TABLE Table_A(
Column_toLook VARCHAR(20), Column_value INT)
INSERT INTO Table_A VALUES
('India',100),
('India',101),
('India',102),
('UK',200),
('UK',201),
('US',300),
('US',301);
CREATE TABLE Table_B(India INT,UK INT,US INT,Japan INT,Aus INT,germany INT)
INSERT INTO Table_B VALUES
(100,200,300,400,500,600),
(101,201,301,401,501,601),
(105,205,305,405,505,605);
--Output 1
;WITH CTE AS
(
SELECT *
FROM Table_B
UNPIVOT(Country_Value FOR Countries IN ([India],[UK],[US],[Japan],[Aus],[germany]))U
)
SELECT A.Column_toLook,A.Column_value,
CASE WHEN C.Country_Value IS NOT NULL THEN 'TRUE' ELSE 'FALSE' END AS FLAG
FROM CTE C RIGHT JOIN Table_A A ON C.Countries= A.Column_toLook AND C.Country_Value=A.Column_value;
--Output 2
;WITH CTE1 AS
(
SELECT *
FROM Table_B
UNPIVOT(Country_Value FOR Countries IN ([India],[UK],[US],[Japan],[Aus],[germany]))U
),CTE2 AS
(
SELECT C1.Countries,C1.Country_Value
,CASE WHEN A.Column_value IS NOT NULL THEN 'TRUE' ELSE 'FALSE' END AS FLAG
,ROW_NUMBER()OVER(PARTITION BY Countries ORDER BY Country_Value) AS RNum
FROM CTE1 C1 LEFT JOIN Table_A A ON C1.Countries= A.Column_toLook AND C1.Country_Value=A.Column_value
)
SELECT [India_Value],[India_Flag],[UK_Value],[UK_Flag],[US_Value],[US_Flag]
,[Japan_Value],[Japan_Flag],[Aus_Value],[Aus_Flag],[germany_Value],[germany_Flag]
FROM (SELECT Countries+'_'+COLUMN_NAMES AS NEW_COLUMN,[VALUES],RNUM
FROM CTE2 CROSS APPLY(VALUES(CAST(Country_Value AS VARCHAR(20)),'Value'),(FLAG,'Flag'))C([VALUES],COLUMN_NAMES)
)S
PIVOT(MAX([VALUES]) FOR NEW_COLUMN IN([India_Value],[India_Flag],[UK_Value],[UK_Flag],[US_Value],[US_Flag]
,[Japan_Value],[Japan_Flag],[Aus_Value],[Aus_Flag],[germany_Value],[germany_Flag]))P
If both of them don't meet your requirements, please provide the output you really want (you can clearly show it through the screenshot of excel).
Best regards,
LiHong
If the answer is the right solution, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
Note: Please follow the steps in our Documentation to enable e-mail notifications if you want to receive the related email notification for this thread.