2016-12-10 23 views
0
SocialStatus 
╔═════════════════════════════════════════════════════════════════╗ 
║ SocialStatusId | SocialTypeId | ResidentId | Details | IsActive ║ 
╠═════════════════════════════════════════════════════════════════╣ 
║  16  |  5  |  2  | Sample |  1 ║ 
║  17  |  6  |  4  | kgfhkhgf|  0 ║ 
║  18  |  8  |  2  | NULL |  1 ║ 
║  19  |  8  |  6  | NULL |  0 ║ 
║  21  |  5  |  8  | asdasd |  1 ║ 
║  22  |  5  |  3  | adasd |  0 ║ 
╚═════════════════════════════════════════════════════════════════╝ 

Resident 
╔════════════╦═══════════╦════════════╦══════════╦════════════╦═════════╦══════════╦═══════════════╦═══════════════╦══════════╦══════════╗ 
║ ResidentId ║ FirstName ║ MiddleName ║ LastName ║ Birthdate ║ Address ║ GenderId ║ ContactNumber ║ IsNonResident ║ IsActive ║ StreetId ║ 
╠════════════╬═══════════╬════════════╬══════════╬════════════╬═════════╬══════════╬═══════════════╬═══════════════╬══════════╬══════════╣ 
║   8 ║ Jonathan ║ Santos  ║ Guinto ║ 2016-11-17 ║ Sample ║  1 ║ 09107435739 ║    0 ║  1 ║ NULL  ║ 
╚════════════╩═══════════╩════════════╩══════════╩════════════╩═════════╩══════════╩═══════════════╩═══════════════╩══════════╩══════════╝ 

SocialType 
╔══════════════╦════════════════════════╦═════════════╦══════════╗ 
║ SocialTypeId ║  SocialName  ║ Description ║ IsActive ║ 
╠══════════════╬════════════════════════╬═════════════╬══════════╣ 
║   1 ║ Sample     ║ Sample0001 ║  0 ║ 
║   2 ║ Sample2    ║ Sample222 ║  0 ║ 
║   3 ║ Sample3    ║ Sample3123 ║  0 ║ 
║   4 ║ Sample4    ║ Sample4  ║  0 ║ 
║   5 ║ Person with disability ║ Happy  ║  1 ║ 
║   6 ║ Señior Citizen   ║ Sample  ║  1 ║ 
║   7 ║ Unemployed    ║ sample  ║  1 ║ 
║   8 ║ Indigence    ║ sample  ║  1 ║ 
║   9 ║ Rowllens    ║ asdasdasd ║  0 ║ 
║   10 ║      ║    ║  0 ║ 
╚══════════════╩════════════════════════╩═════════════╩══════════╝ 

從頂部BUTTOM是SQL連接與不退出

  • SocialStatus
  • 居民
  • SocialType

我想做的事就是加入SocialType和SocialStatus表,則如果居民有這個過濾器,即SeñiorCitizen然後將一個位列分配給真正說明更多信息,請參閱輸出表

我查詢

SELECT 
    st.SocialTypeId, 
    st.SocialName, 
    CASE WHEN ss.SocialStatusId IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS IsAssign 
FROM dbo.SocialType st 
LEFT JOIN dbo.SocialStatus ss ON st.SocialTypeId = ss.SocialTypeId 
WHERE ss.IsActive = 1 AND ss.ResidentId = 8 

該查詢返回只有一個字段的SocialType表 輸出

╔══════════════╦════════════════════════╦══════════╗ 
║ SocialTypeId ║  SocialName  ║ IsAssign ║ 
╠══════════════╬════════════════════════╬══════════╣ 
║   5 ║ Person with disability ║  1 ║ 
╚══════════════╩════════════════════════╩══════════╝ 

慾望輸出是一樣的東西這

╔══════════════╦════════════════════════╦══════════╗ 
║ SocialTypeId ║  SocialName  ║ IsAssign ║ 
╠══════════════╬════════════════════════╬══════════╣ 
║   5 ║ Person with disability ║  1 ║ 
║   6 ║ Señior Citizen   ║  0 ║ 
║   7 ║ Unemployed    ║  0 ║ 
║   8 ║ Indigence    ║  0 ║ 
╚══════════════╩════════════════════════╩══════════╝ 
+0

如何查詢只返回單個列! –

+1

請爲所有表格命名,這是非常令人困惑的,併發布您想要的輸出,而不是您的查詢返回的內容。 – Susang

+0

@Suraz我已經更新了問題,並且期望的輸出已經發布,請參閱最後一個表輸出謝謝 – armory09

回答

1

根據您的願望,因此,嘗試了下:

select 
     distinct st.SocialTypeId, 
     SocialName, 
     CASE 
      WHEN ss.SocialStatusId IS NULL 
      THEN CAST(1 AS bit) 
      ELSE CAST(0 AS bit) 
      END AS IsAssign 
from 
     SocialType st left outer join SocialStatus ss 
on  
     st.SocialTypeId = ss.SocialTypeId 
where 
     st.IsActive = 1 

結果將是爲未來: -

enter image description here

注:

關於column「 IsAssign「,你的慾望結果是1對於SocialTypeId equlas 5 altought ss.SocialStatusId有號碼! ,所以結果將會是0根據CASE你使用的線索,是否存在錯誤,善意地重新訪問你的CASE線索。


更新下comment-

取決於用於過濾ss.residentId =8用它連接條件,而不是WHERE子句。

如下: - ?

select 
     distinct st.SocialTypeId, 
     SocialName, 

     CASE 
      WHEN ss.SocialStatusId IS NOT NULL 
      THEN CAST(1 AS bit) 
      ELSE CAST(0 AS bit) 
      END AS IsAssign 
from 
     SocialType st left outer join SocialStatus ss 
on  
     st.SocialTypeId = ss.SocialTypeId and 
     ss.residentId =8 
where 
     st.IsActive = 1 
+0

感謝@ahmed abdelqader它真的非常接近,但是當我嘗試過濾residentId = 8時,殘障人士請返回兩次看到鏈接https://s28.postimg.org/909gjgawt/query.png https://s28.postimg.org/wfrdosunx/result.png – armory09

+0

@ armory09答案已更新,請訪問它,等待你的反饋。 –

+0

非常感謝你,這是什麼樣的魔術。大聲笑 – armory09