我有两个表:
文档标题和文档行。
我正在使用“文档标题”:
-文档号
-进口于
-责任中心
我要从文档行中起诉:
-否
我的代码示例:
SELECT
DocHeader.[Document No_] AS DocNo
,DocHeader.[Imported on] AS ImportedOn
,DocLine.No_ AS BoxNo
,DocHeader.[Responsibility Center] AS Center
,CASE
WHEN DocHeader.[Status] = 0 THEN 'Posted'
WHEN DocHeader.[Status] = 1 THEN 'Imported'
WHEN DocHeader.[Status] = 2 THEN 'Processed'
WHEN DocHeader.[Status] = 3 THEN '3'
ELSE 'Empty'
END AS STATUS
FROM [MDR].[dbo].[nav_BG$IC_Document_Header] AS DocHeader
JOIN [MDR].[dbo].[nav_BG$IC_Document_Line] AS DocLine ON DocHeader.[Document No_] = DocLine.[Document No_]
WHERE DocHeader.[Document No_] = 'BGLTD0005237'
问题是我的代码正在从同一文档创建多个行。
一个DocNo可以拥有一个以上的BoxNo。
他将每个DocNo的BoxNo翻倍。
我在哪里做错什么?
结果示例:
DocNo ImportedOn BoxNo Center Status
1234 2019-11-20 12 B01 Posted
1234 2019-11-20 12 B01 Posted
7777 2019-11-20 12 B01 Posted
7777 2019-11-20 12 B01 Posted
正确的方法是:
DocNo ImportedOn BoxNo Center Status
1234 2019-11-20 12 B01 Posted
7777 2019-11-20 12 B01 Posted
解决方案是在文档类型的where子句中添加过滤器。
答案 0 :(得分:1)
您是否尝试过使用MAX()函数?它将返回所选列的最大值,如果我正确理解了您的问题,则应删除重复的行。
MAX(DocHeader.[Document No_]) AS DocNo