Uma tabela tem dados CSV e eu quero fazer um SELECT DISTINCT ID
nessa tabela, como devo proceder?
+-----------+
| id |
+-----------+
| 111,1487 |
+-----------+
| 462 |
+-----------+
| 2492 |
+-----------+
| 3184 |
+-----------+
| 3181,3184 |
+-----------+
| 3181 |
+-----------+
| 440 |
+-----------+
| 1436 |
+-----------+
Eu tenho uma função que eu costumo usar que pode dividir varchar csv string de INTs em uma tabela de uma coluna que eu uso da seguinte forma:
SELECT number from INTLIST_TO_TBL('123,234,345,4566')
Funciona bem, mas não posso usá-lo neste caso, pois há muitas linhas e retornará várias linhas em determinados casos.
Devo tentar usar um cursor que insere em uma tabela temporária e prosseguir para a próxima etapa consultando essa tabela temporária?
Já me disseram que os cursores são sinônimo de desempenho ruim, e é por isso que sempre recorro a perguntar aqui antes de seguir esse caminho.
Você deve ser capaz de usar CROSS APPLY .
Em um esforço para fornecer um exemplo mínimo completo verificável, incluí um SPLIT TVF 'simples' que se destina a emular sua função INTLIST_TO_TBL. Isso é apenas para fins de demonstração e existem maneiras mais eficientes de dividir uma string que está além da minha resposta.
Agora que temos o Split TVF, vamos ver um exemplo de como incorporá-lo.