且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SQL Server CTE左外部联接

更新时间:2023-01-29 14:31:17

从我的理解来看,我不认为您正在寻找CTE来做到这一点:

I don't think you are looking for a CTE to do that, from what I understand:

CREATE TABLE CustomerTest(
    CID INT,
    UPID INT
    );
CREATE TABLE ConfTest(
    CID INT,
    ConfName VARCHAR(45),
    ConfValue INT
    );

INSERT INTO CustomerTest VALUES
(1, 0),
(2, 1),
(3, 1),
(4, 2),
(5, 2),
(6, 3),
(7, 5),
(8, 5);

INSERT INTO ConfTest VALUES
(1, 'Budget', 1000),
(2, 'Budget', 700),
(3, 'Budget', 300),
(4, 'Budget', 100),
(5, 'Budget', 200),
(6, 'Budget', 300);

SELECT MAX(CNT.CID) AS CID,
       CNT.ConfName,
       MIN(CNT.ConfValue) AS ConfValue
FROM ConfTest CNT INNER JOIN CustomerTest CMT ON CMT.CID = CNT.CID
                                              OR CMT.UPID = CNT.CID
WHERE  CMT.CID = 7 -- You can test for values (8, 4) or any value you want :)
GROUP BY
       CNT.ConfName;