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
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