J'ai encore une question fondamentale:
Si je fais :
SELECT DISTINCT id, date, doctext, docline, from documentation where date in (02/14/2017)
doctext est un char(80)
et je ne peux pas le changer. Le problème de cette colonne est la taille, je ne peux pas save une valeur> 80 caractères, Si le doc est> 80 caractères, il va save deux lignes dans SQL et mettre à jour le docline
Donc, mon résultat est, par exemple:
0 2017-02-14 this is a basic test to show you the result 0 1 2017-02-14 this is a new basic test to show you the result 0 2 2017-02-14 this is a long basic test to show you the result 0 2 2017-02-14 when the documentation have multiple lines 1
Ce que j'essaie de faire est de concaténer doctext si le résultat a plusieurs lignes avec le même identifiant Donc le résultat devrait être:
0 2017-02-14 this is a basic test to show you the result 1 2017-02-14 this is a new basic test to show you the result 2 2017-02-14 this is a long basic test to show you the result when the documentation have multiple lines 1
Est-il possible de concaténer une colonne sur une ligne dépend d'un identifiant? J'essaye avec CASE comme:
CASE WHEN docline > 0 THEN DOCTEXT ...
Je ne sais pas comment je peux préciser que je voudrais le prochain DOCTEXT
Merci,
Quelque chose comme ça devrait fonctionner
SELECT id, date,MAX(docline), Ids=Stuff((SELECT ' ' + doctext FROM documentation d WHERE d.id=documentation.id FOR XML PATH ('')) , 1, 1, '' ) from documentation where date in (02/14/2017) GROUP BY id,date
For storing multiple lines you used the docline column but I didn't use it.
if you want you can add it.
I used two tables(MasterTable and DetailsTable)
Master Table:
ID | Date | DocText
-----------------------------
1 2017-01-14 Hello
-----------------------------
2 2017-03-18 Good Bye
------------------------------
3 2017-02-14 Hello Iran
------------------------------
4 2017-02-14 Good Bye Iran
------------------------------
DetailsTable:
ID | DocText
---------------------------
3 How are you ?
---------------------------
4 See you ?
---------------------------
Use Test;
go
select mt.ID,mt.DocText + ' ' + ISNULL(dt.DocText,'') as DocText
from MasterTable mt
full outer join DetailsTable dt
on mt.ID=dt.ID;
It works for multiple lines.
the result:
ID | Date | DocText
--------------------------------------------
1 2017-01-14 Hello
--------------------------------------------
2 2017-03-18 Good Bye
--------------------------------------------
3 2017-02-14 Hello Iran How are you ?
--------------------------------------------
4 2017-02-14 Good Bye Iran See you ?
--------------------------------------------