Lea*_*cro 0 sql t-sql sql-server
我正在加入2个表并显示InvNumber,InvAmount和JobNumber的数据.我只需要在第一行显示InvNumber和InvAmount.发票有多个应显示的作业编号.
HEre是DDL
DECLARE @Date datetime;
SET @Date = GETDATE();
DECLARE @TEST_DATA TABLE
(
DT_ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED
,InvNumber VARCHAR(10) NOT NULL
,InvAmount VARCHAR(10) NOT NULL
,JobNumber VARCHAR(10) NOT NULL
);
INSERT INTO @TEST_DATA (InvNumber, InvAmount,JobNumber)
VALUES
('70001', '12056','J65448')
,('70001', '12056','J12566')
,('70001', '12056','J35222')
,('70001', '12056','J45222')
,('70001', '12056','456855')
,('70001', '12056','J55254')
;
SELECT
J.DT_ID
,InvNumber
,InvAmount
,JobNumber
FROM @TEST_DATA AS J
Run Code Online (Sandbox Code Playgroud)
您可以使用ROW_NUMBER和CASE表达式执行类似的操作.
SELECT DT_ID,
CASE WHEN RN = 1 THEN InvNumber
ELSE ''
END InvNumber,
CASE WHEN RN = 1 THEN InvAmount
ELSE ''
END InvAmount,
JobNumber
FROM (SELECT DT_ID,
InvNumber,
InvAmount,
JobNumber,
ROW_NUMBER() OVER (PARTITION BY InvNumber,InvAmount ORDER BY DT_ID) RN
FROM @TEST_DATA
) j
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
199 次 |
| 最近记录: |