Sql server 2005 跳过后续行中相同值的输出
朋友 我希望使用tbale tblABC的sql查询获得以下类型的输出Sql server 2005 跳过后续行中相同值的输出,sql-server-2005,Sql Server 2005,朋友 我希望使用tbale tblABC的sql查询获得以下类型的输出 OUTPUT ====== SrNo. Date BillNo Amount ================================================= 1 10-02-2012 VAT-1 1200.00 2
OUTPUT
======
SrNo. Date BillNo Amount
=================================================
1 10-02-2012 VAT-1 1200.00
2 RET-4 50.00
3 RET-5 150.50
4 11-02-2012 VAT-2 1500.00
5 RET-6 2505.00
6 12-02-2012 VAT-3 05.00
从包含以下数据的表中
tblABC
======
SrNo. Date BillNo Amount
=================================================
1 10-02-2012 VAT-1 1200.00
2 10-02-2012 RET-4 50.00
3 10-02-2012 RET-5 150.50
4 11-02-2012 VAT-2 1500.00
5 11-02-2012 RET-6 2505.00
6 12-02-2012 VAT-3 05.00
我想要的输出和表之间的区别是
输出我不想要日期报告,因为它在表中
请帮助我如何获得它。select语句中的用例关键字。
如果上次输出时显示了代码?为什么需要SQL Server为您保留此值?您的客户端应用程序在显示数据时必须逐行循环,您的客户端应用程序不能跟踪最后一个值,如果当前值相同,就不显示它吗?选择SrNo、BillNo、Credit,由于TBABC会导致报告缓慢,所以在大量数据的情况下,LOOP会花费大量时间。这不是一个非常有用的答案。你能解释一下简单地在选择列表中添加一个case表达式会有什么帮助吗?嗨,亚伦,你的答案是对的,但我执行查询时无法得到rn(RowNumber),然后在输出rn中从1开始计数,直到它没有得到不同的日期。我不明白它(rn)是如何再次从1开始为下一个日期窗口函数使用分区(分组)和排序(排名)来分配数字。在英语中,取所有日期相同的行,然后根据SrNo的值分发1、2、3等。现在重复下一个不同的日期。在输出中,我们只是有条件地显示它们在分组中“第一个”的日期。
DECLARE @tblABC TABLE
(
SrNo INT, [Date] DATETIME, BillNo CHAR(5), Amount DECIMAL(10,2)
);
INSERT @tblABC SELECT 1,'20120210','VAT-1',1200.00
UNION ALL SELECT 2,'20120210','RET-4',50.00
UNION ALL SELECT 3,'20120210','RET-5',150.50
UNION ALL SELECT 4,'20120211','VAT-2',1500.00
UNION ALL SELECT 5,'20120211','RET-6',2505.00
UNION ALL SELECT 6,'20120212','VAT-3',05.00;
;WITH x AS
(
SELECT SrNo, [Date] = REPLACE(CONVERT(CHAR(10), [Date], 103), '/', '-'),
BillNo, Amount, rn = ROW_NUMBER() OVER (PARTITION BY [Date] ORDER BY SrNo)
FROM @tblAbC
)
SELECT SrNo, [Date] = CASE rn WHEN 1 THEN [Date] ELSE '' END, BillNo, Amount
FROM x
ORDER BY SrNo;