【发布时间】:2017-04-25 15:54:48
【问题描述】:
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 ║
╚══════════════╩════════════════════════╩═════════════╩══════════╝
从上到下是
- 社交状态
- 居民
- 社交类型
我想要做的是加入 SocialType 和 SocialStatus 表,然后过滤居民是否有这个,即 Señior Citizen 然后将位列分配给 true 以说明更多信息,请参阅输出表
我的查询
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 ║
╚══════════════╩════════════════════════╩══════════╝
【问题讨论】:
-
查询如何只返回单列?!!
-
请给所有表命名,这很令人困惑,并发布您想要的输出而不是您的查询返回的内容。
-
@Suraz 我已经更新了问题,并且已经发布了所需的输出,请参阅最后一个表格输出谢谢
标签: sql sql-server database join inner-join