[英]sql server select from two tables as null or value
這應該不難,但我無法以某種方式完成這項工作。 所以我有兩個表: Splanning_Buildings
和Splanning_RoomData
。 Splanning_Buildings表中OBJECTID的主鍵在Splanning_RoomData表中表示為Objectid_bldg。
我需要的是從Splanning_Buildings表中選擇所有行,這樣,如果在Splanning_RoomData表中找到其值,則將其顯示為“ Existing”字符串; 但如果在Splanning_RoomData中找不到,則顯示為空白。
這是SQL Server 2012。
這是我的SQL:
SELECT t1.objectid, name, t2.building_n FROM splanning_buildings t1 LEFT JOIN splanning_roomdata t2 ON t1.objectid = t2.objectid_bldg WHERE t2.objectid_bldg IS NULL
SELECT t1.objectid, name, t2.building_n FROM splanning_buildings t1 LEFT JOIN splanning_roomdata t2 ON t1.objectid = t2.objectid_bldg
第一個查詢返回splanning-buildings表中的所有行,但不存在splanning_RoomData表的行; 所以t2.building_n為'null'。 說得通。
第二個查詢返回建築表中的所有行,但返回多個t2.buildings_n行。
這些都不是理想的結果! 我想我需要某種SQL Case()函數嗎?
任何想法? 謝謝!
SELECT t1.objectid, name,
CASE WHEN (EXISTS(SELECT TOP(1) 1 FROM splanning_roomdata t2 WHERE t1.objectid = t2.objectid_bldg )) THEN
'Exists'
ELSE 'Not exists' END AS [status]
FROM splanning_buildings t1
select objectid,
(select top 1 1 from room_data
where objectid_bldg=objectid)
as roomdata_exists from buildings
我簡化了您的表名-希望您仍然可以理解它。 ;-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.