我正在尝试从联接表中添加一列,但是当我这样做时,它将返回更多行。这是原始查询:
SELECT DISTINCT ppa.*
FROM pbf_PayableApproval ppa WITH (NOLOCK)
INNER JOIN PayableDetail pd
ON ppa.PybleHdrID = pd.PybleHdrID
INNER JOIN TransactionType tt WITH (NOLOCK)
ON tt.TrnsctnTypID = pd.TrnsctnTypID
WHERE ppa.ApprovedByUserID IS NULL
AND ppa.Approved = 'Y'
ORDER BY ApprovalID
它返回约85行
但是然后我像这样添加一列,它返回200多个。
SELECT DISTINCT tt.TrnsctnTypDesc, ppa.*
FROM pbf_PayableApproval ppa WITH (NOLOCK)
INNER JOIN PayableDetail pd
ON ppa.PybleHdrID = pd.PybleHdrID
INNER JOIN TransactionType tt WITH (NOLOCK)
ON tt.TrnsctnTypID = pd.TrnsctnTypID
WHERE ppa.ApprovedByUserID IS NULL
AND ppa.Approved = 'Y'
ORDER BY ApprovalID
答案 0 :(得分:0)
SELECT DISTINCT
正在查看选择列表中的 all 列。这很容易看到。考虑以下数据:
X Y
1 a
1 b
1 c
查询:
select distinct x
from t;
返回一行-值为1
。
查询:
select distinct x, y
from t;
返回所有三行。
通常,如果希望一个或多个列组合是不同的,则可以使用group by
。切记对其余的列使用聚合函数。所以这个查询:
select x, min(y), max(y0
from t
group by x;
每x
返回一行(即一行),并包含y
的最小值和最大值。