【发布时间】:2011-08-17 20:01:37
【问题描述】:
我有一个查询,它返回每个国家/地区的一行数据以及其他相关信息。查询(删除了所有不相关的内容)如下所示:
SELECT a.*, ROW_NUMBER() OVER(ORDER BY a.DateSubmitted) As RowNumber, c.CountryName FROM Table1 a
inner join Table2 b
on a.id = b.id
inner join Table3 c on c.countrycode = b.countrycode
这样返回每一行的行号:
ID User Country RowNumber
8 testtest BANGLADESH 1
14 testtest ANGOLA 2
14 testtest AUSTRALIA 3
14 testtest BANGLADESH 4
15 testera1 BELIZE 5
15 testera1 CONGO 6
但是,我需要为每个唯一的 ID 返回一个 0 或 1,而不是为我已经拥有的主语句中的每一行返回一个 0 或 1。所以我想要的是以下内容:
ID User Country RowNumber
8 testtest BANGLADESH 0
14 testtest ANGOLA 1
14 testtest AUSTRALIA 1
14 testtest BANGLADESH 1
15 testera1 BELIZE 0
15 testera1 CONGO 0
我的 SQL 很弱,我终于有意识地尝试改进它,非常感谢你的帮助。
【问题讨论】:
-
你想要的输出没有意义。你能解释一下吗?
-
据我所知,他希望为每个不同的 id 交替 0,1,0,1,0,1...
-
好的,也许 RowNumber 的列标题不清楚,因为这不是我真正想要的。我要做的是根据父记录而不是 Country 或 RowNumber 在报告上交替行颜色。所以我需要一个在报告中触发的指标,但我需要它为每个新的 ID 行在 0 和 1 之间切换。
-
是的,Dems,一个更简洁的解释:)
-
UGGGGGGGGGGGGGGH. 不要将格式化的东西放在 SQL 中。如果您想要交替颜色在您的报告中这样做。
标签: sql sql-server-2005 sql-server-2008 join