私はINNER JOINとリンクする2つのテーブルを持っています。これらは請求書ヘッダテーブルと請求書ラインテーブルです。SQLクエリのカウンタ列
私が追加したいのは、一意の請求書番号ごとに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はトリックを行います:) – Matth