基于两个变量的SQL DISTINCT
我试图消除客户ID和规则编号相同的重复值。。你知道怎样才能做到吗 谢谢基于两个变量的SQL DISTINCT,sql,sybase,Sql,Sybase,我试图消除客户ID和规则编号相同的重复值。。你知道怎样才能做到吗 谢谢 SELECT Violations_Temp.Temp_ID as 'ID', Customers.Cust_Name as 'Homeowner', Customers.Add1 as 'Unit', Rules_Main.Rule_Number as 'Rule', Violations_Temp.User_Name as 'Inspector',
SELECT Violations_Temp.Temp_ID as 'ID',
Customers.Cust_Name as 'Homeowner',
Customers.Add1 as 'Unit',
Rules_Main.Rule_Number as 'Rule',
Violations_Temp.User_Name as 'Inspector',
DATE(Violations_Temp.Upload_TimeStamp) as 'Date',
Cast(Violations_Temp.Upload_TimeStamp as time) as 'Time'
FROM Violations_Temp
JOIN Customers ON Customers.Customer_ID = Violations_Temp.Customer_ID
JOIN Rules_Main ON Rules_Main.Rules_ID = Violations_Temp.Violation_ID
在回复Loc的消息时-您可以从结果中看到(除其他外)房主Adam White有多个记录,其中规则为11-我需要设置此项,以便仅为该组合返回一个记录
(来源:)这可能不是最优雅的方式,但它很有效。。。(当返回的数据加载到数据表中时)
希望这个查询能起作用。我在这里使用了表别名:
SELECT C.*, T.Upload_TimeStamp, T.User_Name, X.Rule_Number
FROM Customers C,
Violations_Temp T,
(SELECT
T.Customer_ID,
R.Rule_Number,
MAX(T.Upload_TimeStamp) AS MAX_Upload_Timestamp
FROM
Violations_Temp T,
Rules_Main R
WHERE T.Violation_ID = R.Rules_ID
GROUP BY C.Customer_ID, R.Rule_Number) X
WHERE
T.Customer_ID = C.Customer_ID
AND T.Customer_ID = X.Customer_ID
AND T.Upload_TimeStamp = X.MAX_Upload_Timestamp
您的查询目的是什么?我已编辑查询以显示结果,但您没有重复项。每个ID都是不同的。除非你想从房主和规则那里得到它,否则没有办法做你想做的。我看不到任何重复的客户ID,规则编号。你不是说房主,规则编号吗?你必须定义一个重复的标准。例如,您是对的,对于客户adam white,规则11多次出现,但对于每个结果,都有一个唯一的
违规\u Temp.Upload\u TimeStamp
。我们应该保留哪一个?
SELECT C.*, T.Upload_TimeStamp, T.User_Name, X.Rule_Number
FROM Customers C,
Violations_Temp T,
(SELECT
T.Customer_ID,
R.Rule_Number,
MAX(T.Upload_TimeStamp) AS MAX_Upload_Timestamp
FROM
Violations_Temp T,
Rules_Main R
WHERE T.Violation_ID = R.Rules_ID
GROUP BY C.Customer_ID, R.Rule_Number) X
WHERE
T.Customer_ID = C.Customer_ID
AND T.Customer_ID = X.Customer_ID
AND T.Upload_TimeStamp = X.MAX_Upload_Timestamp