【发布时间】:2016-05-18 09:26:02
【问题描述】:
我有两个表,我通过 INNER JOIN 链接。它们是 Invoice Header 表和 Invoice Lines 表。
我想添加的是某种计数器列,它会为每个唯一的发票编号给我一个 1,而如果发票有多个行项目,则为任何重复的发票编号给我一个 0。然后,当我稍后分析我的数据时,它将允许我对 Excel 中的各个列进行计数。基本上是计数,但只在左表的记录上,忽略右表。
我只是不知道如何使用 COUNT() 或 CASE 来使其工作。有可能吗?
这是我的查询:
SELECT P.DocNum
, L.LineNum
, P.DocCur
, P.DocTotalFC
, P.DocTotal
, CASE
WHEN LEFT(L.AcctCode, 1) = '7' THEN 'Admin'
WHEN LEFT(L.AcctCode, 2) = '15' THEN 'Admin'
WHEN L.AcctCode = '11501' THEN 'MX'
WHEN LEFT(L.Project, 1) = 'W' THEN 'MX'
WHEN L.OcrCode2 = '570' THEN 'MEC'
WHEN L.OcrCode2 = '590' THEN 'ZHU'
ELSE 'Flight Ops'
END AS 'Type'
, L.AcctCode AS 'Account'
, L.OcrCode AS 'Aircraft'
, L.OcrCode2 AS 'Department'
, L.OcrCode3 AS 'Business Unit'
, L.Project AS 'Project'
, L.LineTotal
FROM OPCH P
INNER JOIN PCH1 L ON P.DocEntry = L.DocEntry
WHERE P.DocDate BETWEEN '2016-01-01' AND '2016-03-31'
ORDER BY P.DocNum, L.LineNum
高度赞赏任何提示。
提前致谢。
【问题讨论】:
-
发票号是哪一个?哪个版本的
SQL Server? -
发票编号为DocNum字段。服务器是 SQL Server 2008。Sagi 的分区上的 row_number 可以解决问题:)
标签: sql-server count inner-join