带有"是/否"列的SQL SELECT,用于说明Customer是否具有关联订单

pfe*_*eds 0 sql sql-server select

我想创建一个返回Customers列表的SQL语句,例如:

SELECT Id, FirstName, LastName FROM Customer
Run Code Online (Sandbox Code Playgroud)

显然,那部分很容易.

现在我想创建一个变量列,例如HasOrders.我希望这是一个动态生成的bool列,基于Customer是否在Order表中有一个或多个订单.出于此问题的目的,假设订单是否开放无关紧要,只是订单是否存在该客户ID.

我希望SELECT语句返回所有客户,而不仅仅是带有订单的客户.我需要根据客户是否有订单来做进一步的逻辑.

我不确定这是否可以用IF..ELSE,CASE或嵌套的SELECT实现?

Joh*_*Woo 8

SELECT  a.ID, a.FirstName, a.Lastname,
        CASE WHEN COUNT(b.CustID) > 0 THEN 'YES' ELSE 'NO' END AS HasOrders
FROM    Customer a
        LEFT JOIN Orders b
            ON a.ID = b.CustID        -- <<== the linking column on both tables
GROUP   BY a.ID, a.FirstName, a.Lastname
Run Code Online (Sandbox Code Playgroud)