我的查询如下。它给了我两次相同的价值。请看看
SELECT distinct T0.[ItemCode],T0.[Dscription] ,T0.[Project], T0.[Quantity] as [Recipts], T0.[DocDate], T0.[Project], T1.[Quantity] as [Issues] ,(T0.[Quantity] -T1.[Quantity]) as 'ABC'
FROM [dbo].[IGN1] T0
INNER JOIN IGE1 T1 ON T0.[DocDate] = T1.[DocDate]
where T0.WhsCode = 'RecBay'
and T0.[DocDate] = '13jan2016'
and T0.[ItemCode] = 'Abebatest'
and T0.[Project] = 'GHS01'
GROUP BY T0.[ItemCode], T0.[Dscription] ,T0.[Project] ,T0.[DocDate] ,T0.[Dscription] ,T0.[Quantity], T1.[Quantity]
我得到以下输出
| # | Item No. | Item/Service Description | Project Code | Recipts | Posting Date | Project Code | Issues | ABC |
|---|-----------|--------------------------|--------------|----------|--------------|--------------|--------|----------|
| 1 | Abebatest | Abebatest | GHS01 | 100 | 13.01.2016 | GHS01 | 50 | 50 |
| 2 | Abebatest | Abebatest | GHS01 | 100 | 13.01.2016 | GHS01 | 100 | 0 |
| 3 | Abebatest | Abebatest | GHS01 | 200 | 13.01.2016 | GHS01 | 50 | 150 |
| 4 | Abebatest | Abebatest | GHS01 | 200 | 13.01.2016 | GHS01 | 100 | 100 |
| 5 | Abebatest | Abebatest | GHS01 | 2,000.00 | 13.01.2016 | GHS01 | 50 | 1,950.00 |
| 6 | Abebatest | Abebatest | GHS01 | 2,000.00 | 13.01.2016 | GHS01 | 100 | 1,900.00 |
| # | Item No. | Item/Service Description | Project Code | Recipts | Posting Date | Project Code | Issues | ABC |
|---|-----------|--------------------------|--------------|----------|--------------|--------------|--------|----------|
| 1 | Abebatest | Abebatest | GHS01 | 100 | 13.01.2016 | GHS01 | 50 | 50 |
| 2 | Abebatest | Abebatest | GHS01 | 100 | 13.01.2016 | GHS01 | 100 | 0 |
| 3 | Abebatest | Abebatest | GHS01 | 200 | 13.01.2016 | GHS01 | 50 | 150 |
| 4 | Abebatest | Abebatest | GHS01 | 200 | 13.01.2016 | GHS01 | 100 | 100 |
| 5 | Abebatest | Abebatest | GHS01 | 2,000.00 | 13.01.2016 | GHS01 | 50 | 1,950.00 |
| 6 | Abebatest | Abebatest | GHS01 | 2,000.00 | 13.01.2016 | GHS01 | 100 | 1,900.00 |
答案 0 :(得分:0)
DISTINCT
遍及整行,而不仅仅是ItemCode
。
在您的情况下,如果您逐列比较它们,则所有记录都是唯一的。
<强>更新强>
DISTINCT
仅返回唯一的结果集记录。例如,如果您有下表:
+------+------+
| Col1 | Col2 |
+------+------+
| 1 | a |
| 1 | b |
| 2 | c |
| 2 | c |
+------+------+
然后针对它运行以下脚本:
SELECT DISTINCT Col1, Col2 FROM TABLE
仅返回第1,2和3行。 (即使第1行和第2行Col1
相同,Col2
也会使row
不同。)
最后,DISTINCT
适用于结果集,而不是基表。这意味着,在您的实例中,列abc
是问题的原因,即使它是计算字段。
答案 1 :(得分:0)
Distinct
消除了重复的行!这意味着只有在所有列值相等时才会删除行。
这意味着如果任何其他列值不相等,则可以有10次具有相同T0.[ItemCode]
的行。但是每列都不能有相同值的行。在多列上使用时,Group By
也无法消除单列的重复项。
不要在Group By
上使用T0.[Quantity], T1.[Quantity]
,请使用聚合。