sql - 使用sql从表中获取不可用值的列表

标签 sql sql-server-2008

<分区>

我在 sql server 2008 中有下表,其中包含医院 ID 及其部门:

HID    DEPT
5   neuro
2   derma
3   cardio
2   ent
1   neuro
5   optha
3   ent
3   optha
4   derma
1   optha
5   derma

需要使用 sql 获取它没有的 ID 和部门名称的列表。 例如:

HID   DEPT
 1    derma
 1    cardio
 1    ent
 2    cardio
 2    neuro
 2    optha

等谢谢

最佳答案

试试这个:

;WITH CTE AS
(
    SELECT *
    FROM (  SELECT DISTINCT HID
            FROM YourTable) A
    CROSS JOIN (SELECT DISTINCT DEPT
                FROM YourTable) B
)
SELECT *
FROM CTE A
WHERE NOT EXISTS(SELECT 1 FROM YourTable
                 WHERE HID = A.HID AND DEPT = A.DEPT)

Here is带有演示的 sqlfiddle。

关于sql - 使用sql从表中获取不可用值的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17795549/

相关文章:

当表中根本没有数据时,MySQL 解释在 "rows"中显示 1 行

sql - 选择条件列但获取子查询返回超过 1 个值

sql - 如何使用 GROUP BY 为不同列获取多个 SUM()

sql-server-2008 - SQL SELECT TOP N 每个 ID、每个时间、每个组

SQL Server 2008-获取表约束

sql-server-2008 - 如何获取仅给出当前日期的月份和年份的 6 个月前的数据?

php - 使用 SQL 查询填充 D3.js 饼图

sql - 对查询的输出应用 DENSE_RANK()

sql - 计算一段时间内该月的最后一个日期

sql-server - SQL Server 日期格式取决于用户吗?