我有一个表(我们称之为AAA),其中我的4个channel_id中的每一个都有自己的专用publish flag
列,这是一个由0,1组成的char(4)
这是一个例子
on_date rate_id type_id channel_id publish_flag
2016-02-08 00:00:00.000 98 1 1 1000
2016-02-08 00:00:00.000 98 1 2 0100
2016-02-08 00:00:00.000 98 1 4 0000
2016-02-08 00:00:00.000 98 2 1 1000
2016-02-08 00:00:00.000 98 2 2 0100
2016-02-08 00:00:00.000 98 2 3 0001
2016-02-08 00:00:00.000 98 2 4 0000
我想通过
对结果进行分组上述转变的例子:
on_date rate_id type_id publish_flag
2016-02-08 00:00:00.000 98 1 1100
2016-02-08 00:00:00.000 98 2 1101
因此对于第一组:
1000 +
0100 +
0000 =
--------
1100
和第二组:
1000 +
0100 +
0001 +
0000 =
--------
1101
我是否可以在MS SQL Server 2008R2中实现上述功能?
谢谢
答案 0 :(得分:4)
据我所知,你需要每个位置的最高位。 试试这个:
SELECT
on_date,rate_id,type_id,
MAX(substring(publish_flag, 1,1)) + MAX(substring(publish_flag, 2,1)) +
MAX(substring(publish_flag, 3,1)) + MAX(substring(publish_flag, 4,1)) as publish_flag
FROM YourTable
GROUP BY on_date,rate_id,type_id