J'ai actuellement une section dans ma requête qui ressemble à ceLa construction d'une fonction définie par l'utilisateur qui retourne une table (ou d'autres solutions de rechange), pour rendre la requête plus lisible
, T3 AS (
select 'FSA' as tType, b.fsacd as tBefore, c.fsacd as tAfter from T1 as a , T2 as b,T2 as c where a.beforeID = b.tID and a.afterID =c.tID
union select 'Scale' as tType, b.scd as tBefore, c.scd as tAfter from T1 as a , T2 as b,T2 as c where a.beforeID = b.tID and a.afterID =c.tID
union select 'Retail Source' as tType, b.rsc as tBefore, c.rsc as tAfter from T1 as a , T2 as b,T2 as c where a.beforeID = b.tID and a.afterID =c.tID
union select 'Mix Match' as tType, b.mmcd as tBefore, c.mmcd as tAfter from T1 as a , T2 as b,T2 as c where a.beforeID = b.tID and a.afterID =c.tID
union select 'Price Entry' as tType, b.pecd as tBefore, c.pecd as tAfter from T1 as a , T2 as b,T2 as c where a.beforeID = b.tID and a.afterID =c.tID
union select 'Qntty Entry' as tType, b.qecd as tBefore, c.qecd as tAfter from T1 as a , T2 as b,T2 as c where a.beforeID = b.tID and a.afterID =c.tID
union select 'Price 3 Decs' as tType, b.p3d as tBefore, c.p3d as tAfter from T1 as a , T2 as b,T2 as c where a.beforeID = b.tID and a.afterID =c.tID
union select 'Tare Entry' as tType, b.tecd as tBefore, c.tecd as tAfter from T1 as a , T2 as b,T2 as c where a.beforeID = b.tID and a.afterID =c.tID
union select 'Undiscountable' as tType, b.undsc as tBefore, c.undsc as tAfter from T1 as a , T2 as b,T2 as c where a.beforeID = b.tID and a.afterID =c.tID
union select 'Foodstamp' as tType, b.fds as tBefore, c.fds as tAfter from T1 as a , T2 as b,T2 as c where a.beforeID = b.tID and a.afterID =c.tID
union select 'WIC' as tType, b.wic as tBefore, c.wic as tAfter from T1 as a , T2 as b,T2 as c where a.beforeID = b.tID and a.afterID =c.tID
)
il fonctionne très bien, mais Je voudrais le faire paraître plus compact. Est-il possible de construire une fonction foo
telle que je coul obtenir les mêmes résultats en faisant quelque chose qui pourrait ressembler à ceci
, T3 AS (
foo('FSA' ,fsacd ,T1, T2)
union foo('Scale' ,scd ,T1, T2)
union foo('Retail Source' ,rsc ,T1, T2)
union foo('Mix Match' ,mmcd ,T1, T2)
union foo('Price Entry' ,pecd ,T1, T2)
union foo('Qntty Entry' ,qecd ,T1, T2)
union foo('Price 3 Decs' ,p3d ,T1, T2)
union foo('Tare Entry' ,tecd ,T1, T2)
union foo('Undiscountable' ,undsc ,T1, T2)
union foo('Foodstamp' ,fds ,T1, T2)
union foo('WIC' ,wic ,T1, T2)
)
J'utilise Sybase. Mais si je vois comment cela se passe dans un autre SGBD, je pourrais peut-être comprendre comment cela se fait dans Sybase. –