SQL Server append des strings (de 0,1) logiquement

J'ai une table (appelons-la AAA) dans laquelle chacun de mes 4 channel_ids a sa propre colonne d' publish flag dédiée qui est un char (4) composé de 0s, 1s

Voici un exemple

 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 

Je veux regrouper les résultats par

  • on_date (dans cet exemple 2016-02-08 00: 00: 00.000 98)
  • rate_id (dans cet exemple 98)
  • type_id (dans cet exemple 1 et 2)
  • et au lieu de channel_id pour avoir "l'addition logique" des colonnes d'indicateur de publication

Exemple de la transformation ci-dessus:

 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 

Donc pour le premier groupe:

 1000 + 0100 + 0000 = -------- 1100 

et pour le deuxième groupe:

 1000 + 0100 + 0001 + 0000 = -------- 1101 

Y at-il un truc dans lequel je peux atteindre ce qui précède dans MS SQL Server 2008R2?

Je vous remercie

Autant que je sache, vous avez besoin du bit le plus élevé pour chaque position. Essaye ça:

 SELECT on_date,rate_id,type_id, MAX(subssortingng(publish_flag, 1,1)) + MAX(subssortingng(publish_flag, 2,1)) + MAX(subssortingng(publish_flag, 3,1)) + MAX(subssortingng(publish_flag, 4,1)) as publish_flag FROM YourTable GROUP BY on_date,rate_id,type_id