簡體   English   中英

如何將一個表列行分配給 SQL Server 中的另一個表列值

[英]How to assign one table column row to another table column value in SQL Server

我有兩個名為emplocation表,其中包含此示例數據:

create table emp 
(
     empid int,
     ename varchar(50),
     l1 int, l2 int, l3 int, l4 int
)

insert into emp  values(1,'name1',1,3,2,5)
insert into emp  values(2,'name2',100,6,8,1)
insert into emp  values(3,'name3',11,23,22,52)
insert into emp  values(4,'name4',31,31,22,15)


create table location 
(
    id int, 
    location_name varchar(100)
)

insert into location (id,location_name) values (1,' Mumbai ');
insert into location (id,location_name) values (2,' Delhi ');
insert into location (id,location_name) values (3,' Bangalore ');
insert into location (id,location_name) values (4,' Hyderabad ');
insert into location (id,location_name) values (5,' Ahmedabad ');
insert into location (id,location_name) values (6,' Chennai ');
insert into location (id,location_name) values (7,' Kolkata ');
insert into location (id,location_name) values (8,' Surat ');
insert into location (id,location_name) values (9,' Pune ');
insert into location (id,location_name) values (10,' Jaipur ');
insert into location (id,location_name) values (11,' Lucknow ');
insert into location (id,location_name) values (12,' Kanpur ');
insert into location (id,location_name) values (13,' Nagpur ');
insert into location (id,location_name) values (14,' Indore ');
insert into location (id,location_name) values (15,' Thane ');
insert into location (id,location_name) values (16,' Bhopal ');
insert into location (id,location_name) values (17,' Visakhapatnam[4] ');
insert into location (id,location_name) values (18,' Pimpri-Chinchwad ');
insert into location (id,location_name) values (19,' Patna ');
insert into location (id,location_name) values (20,' Vadodara ');
insert into location (id,location_name) values (21,' Ghaziabad ');
insert into location (id,location_name) values (22,' Ludhiana ');
insert into location (id,location_name) values (23,' Agra ');
insert into location (id,location_name) values (24,' Nashik ');
insert into location (id,location_name) values (25,' Ranchi ');
insert into location (id,location_name) values (26,' Faridabad ');
insert into location (id,location_name) values (27,' Meerut ');
insert into location (id,location_name) values (28,' Rajkot ');
insert into location (id,location_name) values (29,' Kalyan-Dombivli ');
insert into location (id,location_name) values (30,' Vasai-Virar ');
insert into location (id,location_name) values (31,' Varanasi ');
insert into location (id,location_name) values (32,' Srinagar ');
insert into location (id,location_name) values (33,' Aurangabad ');
insert into location (id,location_name) values (34,' Dhanbad ');
insert into location (id,location_name) values (35,' Amritsar ');
insert into location (id,location_name) values (36,' Navi Mumbai ');
insert into location (id,location_name) values (37,' Allahabad ');
insert into location (id,location_name) values (38,' Howrah ');
insert into location (id,location_name) values (39,' Gwalior ');
insert into location (id,location_name) values (40,' Jabalpur ');
insert into location (id,location_name) values (41,' Coimbatore ');
insert into location (id,location_name) values (42,' Vijayawada ');
insert into location (id,location_name) values (43,' Jodhpur ');
insert into location (id,location_name) values (44,' Madurai ');
insert into location (id,location_name) values (45,' Raipur ');
insert into location (id,location_name) values (46,' Chandigarh ');
insert into location (id,location_name) values (47,' Guwahati ');
insert into location (id,location_name) values (48,' Solapur ');
insert into location (id,location_name) values (49,' Hubli–Dharwad ');
insert into location (id,location_name) values (50,' Mysore[6][7][8] ');
insert into location (id,location_name) values (51,' Tiruchirappalli[9] ');
insert into location (id,location_name) values (52,' Bareilly ');
insert into location (id,location_name) values (53,' Aligarh ');
insert into location (id,location_name) values (54,' Tiruppur ');
insert into location (id,location_name) values (55,' Gurgaon ');
insert into location (id,location_name) values (56,' Moradabad ');
insert into location (id,location_name) values (57,' Jalandhar ');
insert into location (id,location_name) values (58,' Bhubaneswar ');
insert into location (id,location_name) values (59,' Salem ');
insert into location (id,location_name) values (60,' Warangal[10][11] ');
insert into location (id,location_name) values (61,' Mira-Bhayandar ');
insert into location (id,location_name) values (62,' Jalgaon ');
insert into location (id,location_name) values (63,' Kota[12] ');
insert into location (id,location_name) values (64,' Guntur[13] ');
insert into location (id,location_name) values (65,' Thiruvananthapuram ');
insert into location (id,location_name) values (66,' Bhiwandi ');
insert into location (id,location_name) values (67,' Saharanpur ');
insert into location (id,location_name) values (68,' Gorakhpur ');
insert into location (id,location_name) values (69,' Bikaner ');
insert into location (id,location_name) values (70,' Amravati ');
insert into location (id,location_name) values (71,' Noida ');
insert into location (id,location_name) values (72,' Jamshedpur ');
insert into location (id,location_name) values (73,' Bhilai ');
insert into location (id,location_name) values (74,' Cuttack ');
insert into location (id,location_name) values (75,' Firozabad ');
insert into location (id,location_name) values (76,' Kochi ');
insert into location (id,location_name) values (77,' Nellore[14][15] ');
insert into location (id,location_name) values (78,' Bhavnagar ');
insert into location (id,location_name) values (79,' Dehradun ');
insert into location (id,location_name) values (80,' Durgapur ');
insert into location (id,location_name) values (81,' Asansol ');
insert into location (id,location_name) values (82,' Rourkela ');
insert into location (id,location_name) values (83,' Nanded ');
insert into location (id,location_name) values (84,' Kolhapur ');
insert into location (id,location_name) values (85,' Ajmer ');
insert into location (id,location_name) values (86,' Akola ');
insert into location (id,location_name) values (87,' Gulbarga ');
insert into location (id,location_name) values (88,' Jamnagar ');
insert into location (id,location_name) values (89,' Ujjain ');
insert into location (id,location_name) values (90,' Loni ');
insert into location (id,location_name) values (91,' Siliguri ');
insert into location (id,location_name) values (92,' Jhansi ');
insert into location (id,location_name) values (93,' Ulhasnagar ');
insert into location (id,location_name) values (94,' Jammu[16] ');
insert into location (id,location_name) values (95,' Sangli-Miraj & Kupwad ');
insert into location (id,location_name) values (96,' Mangalore ');
insert into location (id,location_name) values (97,' Erode[17] ');
insert into location (id,location_name) values (98,' Belgaum ');
insert into location (id,location_name) values (99,' Ambattur ');
insert into location (id,location_name) values (100,' Tirunelveli ');
insert into location (id,location_name) values (101,' Malegaon ');
insert into location (id,location_name) values (102,' Gaya ');
insert into location (id,location_name) values (103,' Udaipur ');
insert into location (id,location_name) values (104,' Kakinada ');
insert into location (id,location_name) values (105,' Davanagere ');
insert into location (id,location_name) values (106,' Kozhikode ');
insert into location (id,location_name) values (107,' Maheshtala ');
insert into location (id,location_name) values (108,' Rajpur Sonarpur ');
insert into location (id,location_name) values (109,' Rajahmundry[18][19] ');
insert into location (id,location_name) values (110,' Bokaro ');
insert into location (id,location_name) values (111,' South Dumdum ');
insert into location (id,location_name) values (112,' Bellary ');
insert into location (id,location_name) values (113,' Patiala ');
insert into location (id,location_name) values (114,' Gopalpur ');
insert into location (id,location_name) values (115,' Agartala ');
insert into location (id,location_name) values (116,' Bhagalpur ');
insert into location (id,location_name) values (117,' Muzaffarnagar ');
insert into location (id,location_name) values (118,' Bhatpara ');
insert into location (id,location_name) values (119,' Panihati ');
insert into location (id,location_name) values (120,' Latur ');
insert into location (id,location_name) values (121,' Dhule ');
insert into location (id,location_name) values (122,' Tirupati[20] ');
insert into location (id,location_name) values (123,' Rohtak ');
insert into location (id,location_name) values (124,' Sagar ');
insert into location (id,location_name) values (125,' Korba ');
insert into location (id,location_name) values (126,' Bhilwara ');
insert into location (id,location_name) values (127,' Berhampur ');
insert into location (id,location_name) values (128,' Muzaffarpur ');
insert into location (id,location_name) values (129,' Ahmednagar ');
insert into location (id,location_name) values (130,' Mathura ');
insert into location (id,location_name) values (131,' Kollam ');
insert into location (id,location_name) values (132,' Avadi ');
insert into location (id,location_name) values (133,' Kadapa ');
insert into location (id,location_name) values (134,' Kamarhati ');
insert into location (id,location_name) values (135,' Sambalpur ');
insert into location (id,location_name) values (136,' Bilaspur ');
insert into location (id,location_name) values (137,' Shahjahanpur ');
insert into location (id,location_name) values (138,' Satara ');
insert into location (id,location_name) values (139,' Bijapur ');
insert into location (id,location_name) values (140,' Kurnool ');
insert into location (id,location_name) values (141,' Rampur ');
insert into location (id,location_name) values (142,' Shimoga ');
insert into location (id,location_name) values (143,' Chandrapur ');
insert into location (id,location_name) values (144,' Junagadh ');
insert into location (id,location_name) values (145,' Thrissur ');
insert into location (id,location_name) values (146,' Alwar ');
insert into location (id,location_name) values (147,' Bardhaman ');
insert into location (id,location_name) values (148,' Kulti ');
insert into location (id,location_name) values (149,' Nizamabad ');
insert into location (id,location_name) values (150,' Parbhani ');
insert into location (id,location_name) values (151,' Tumkur ');
insert into location (id,location_name) values (152,' Khammam ');
insert into location (id,location_name) values (153,' Ozhukarai ');
insert into location (id,location_name) values (154,' Bihar Sharif ');
insert into location (id,location_name) values (155,' Panipat ');
insert into location (id,location_name) values (156,' Darbhanga ');
insert into location (id,location_name) values (157,' Bally ');
insert into location (id,location_name) values (158,' Aizawl ');
insert into location (id,location_name) values (159,' Dewas ');
insert into location (id,location_name) values (160,' Ichalkaranji ');
insert into location (id,location_name) values (161,' Karnal ');
insert into location (id,location_name) values (162,' Bathinda ');
insert into location (id,location_name) values (163,' Jalna ');
insert into location (id,location_name) values (164,' Eluru[21] ');
insert into location (id,location_name) values (165,' Barasat ');
insert into location (id,location_name) values (166,' Kirari Suleman Nagar ');
insert into location (id,location_name) values (167,' Purnia[22] ');
insert into location (id,location_name) values (168,' Satna ');
insert into location (id,location_name) values (169,' Mau ');
insert into location (id,location_name) values (170,' Sonipat ');
insert into location (id,location_name) values (171,' Farrukhabad ');
insert into location (id,location_name) values (173,' Durg ');
insert into location (id,location_name) values (174,' Imphal ');
insert into location (id,location_name) values (175,' Ratlam ');
insert into location (id,location_name) values (176,' Hapur ');
insert into location (id,location_name) values (177,' Arrah ');
insert into location (id,location_name) values (178,' Anantapur ');
insert into location (id,location_name) values (179,' Karimnagar ');
insert into location (id,location_name) values (180,' Etawah ');
insert into location (id,location_name) values (181,' Ambarnath ');
insert into location (id,location_name) values (182,' North Dumdum ');
insert into location (id,location_name) values (183,' Bharatpur ');
insert into location (id,location_name) values (184,' Begusarai ');
insert into location (id,location_name) values (185,' New Delhi ');
insert into location (id,location_name) values (186,' Gandhidham ');
insert into location (id,location_name) values (187,' Baranagar ');
insert into location (id,location_name) values (188,' Tiruvottiyur ');
insert into location (id,location_name) values (189,' Pondicherry ');
insert into location (id,location_name) values (190,' Sikar ');
insert into location (id,location_name) values (191,' Thoothukudi ');
insert into location (id,location_name) values (192,' Rewa ');
insert into location (id,location_name) values (193,' Mirzapur ');
insert into location (id,location_name) values (194,' Raichur ');
insert into location (id,location_name) values (195,' Pali ');
insert into location (id,location_name) values (196,' Ramagundam[23] ');
insert into location (id,location_name) values (197,' Silchar ');
insert into location (id,location_name) values (198,' Haridwar ');
insert into location (id,location_name) values (199,' Vijayanagaram ');
insert into location (id,location_name) values (200,' Tenali ');

預期輸出

1   name1   Mumbai          Bangalore    Delhi      Ahmedabad 
2   name2   Tirunelveli      Chennai     Surat       Mumbai 
3   name3   Lucknow          Agra       Ludhiana     Bareilly 
4   name4   Varanasi         Varanasi    Ludhiana    Thane 

我正在嘗試只有一個加入的答案,請幫助我

使用多個連接:

select e.*,
       l1.location_name, l2.location_name, l3.location_name, l4.location_name
from emp e left join
     location l1
     on e.l1 = l1.id left join
     location l2
     on e.l2 = l2.id left join
     location l1
     on e.l3 = l3.id left join
     location l4
     on e.l4 = l4.id;

我想你正在尋找這樣的東西

select e.empid, e.ename,
       max(case when e.l1=l.id then l.location_name else null end) l1,
       max(case when e.l2=l.id then l.location_name else null end) l2,
       max(case when e.l3=l.id then l.location_name else null end) l3,
       max(case when e.l4=l.id then l.location_name else null end) l4
from emp e
     cross join [location] l
group by e.empid, e.ename;

輸出

empid   ename   l1          l2          l3          l4
1       name1   Mumbai      Bangalore   Delhi       Ahmedabad 
2       name2   Tirunelveli Chennai     Surat       Mumbai 
3       name3   Lucknow     Agra        Ludhiana    Bareilly 
4       name4   Varanasi    Varanasi    Ludhiana    Thane 

使用條件聚合的另一個可能選項:

SELECT 
   e.empid, e.ename, 
   MAX(CASE WHEN e.l1 = l.id THEN l.location_name END) AS l1,
   MAX(CASE WHEN e.l2 = l.id THEN l.location_name END) AS l2,
   MAX(CASE WHEN e.l3 = l.id THEN l.location_name END) AS l3,
   MAX(CASE WHEN e.l4 = l.id THEN l.location_name END) AS l4
FROM emp e
LEFT JOIN location l ON l.id IN (e.l1, e.l2, e.l3, e.l4)
GROUP BY e.empid, e.ename

結果:

empid ename l1          l2          l3       l4
1     name1 Mumbai      Bangalore   Delhi    Ahmedabad 
2     name2 Tirunelveli Chennai     Surat    Mumbai 
3     name3 Lucknow     Agra        Ludhiana Bareilly 
4     name4 Varanasi    Varanasi    Ludhiana Thane 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM