2010-04-30 4 views
0

J'écris un foxpro sql & besoin de combiner trois colonnes de date de trois tables différentes dans une nouvelle colonne de date. A titre d'exemple, si les trois tables sont A, B, & C et que les colonnes de date sont Adate, Bdate et Cdate, comment les combiner en dates distinctes et séparées dans une colonne appelée TransDate et dans le SQL? J'apprécierais des échantillons du code si possible, car je suis très nouveau à ceComment combiner 3 colonnes de date à partir de 3 tables dans Foxpro sql?

+1

Si le tableau A indique Jan st, le tableau B indique le 2 février, le tableau C indique le 3 mars, que voudriez-vous dans votre tableau des résultats? – Andomar

Répondre

0

Nouvelle option de réponse ... à partir de ce que votre commentaire était d'avoir un achat, ou ajustement de stock ou de vente, et sans description claire ou un échantillon de la sortie que vous aimeriez voir, je pense que vous voulez quelque chose comme. ..

Tableau A = Achats Tableau B = Ajustements Tableau C = Ventes

Je ne suis pas sûr d'accord avec cette construction, mais ne peut impliquer de brèves descriptions. Je pense que vous voulez plus d'un « grand livre » résumé de style

Achat 10 janvier Achat 15 janvier Vente 2 février Réglage 10 février Achat 15 février etc ...

Ensuite, je ferais une UNION

select 
     "Purchase " as TransType, 
     T1.ADate as TransDate 
    from 
     YourTableA T1 
    where 
     T1.IDKey = ?SomeValueSuchAsAccount 
    order by 
     TransDate 
UNION ALL 
select 
     "Adjustments" as TransType, 
     T2.BDate as TransDate 
    from 
     YourTableB T2 
    where 
     T2.IDKey = ?SomeValueSuchAsAccount 
UNION ALL 
select 
     "Sales  " as TransType, 
     T3.CDate as TransDate 
    from 
     YourTableB T3 
    where 
     T3.IDKey = ?SomeValueSuchAsAccount 

Si je me trompe sur mes hypothèses, s'il vous plaît me fournir et d'autres un peu plus des échantillons de ces opérations, la mise en page de données, etc ... données en direct n'a pas besoin d'être nécessaire, ni faire table complète structures ou nom de la table réelle s. Cependant, nous avons besoin de plus de travailler avec, surtout si vous voulez de l'aide à l'avenir, sinon, les gens peuvent juste souffler par vos demandes. Pouvez-vous expliquer ce que vous entendez par «dates de combinaison»?

+0

DRapp merci pour votre aide jusqu'à présent. Je voudrais montrer toutes les informations pour un produit donné sur la même ligne de date si possible. Si le produit est acheté le 1er janvier, ajusté le 1er janvier et vendu le 1er janvier, une ligne est affichée, alors que s'il est acheté le 1er janvier, ajusté le 2 janvier et vendu le 3 janvier, trois lignes seront affichées . J'espérais que ceci pourrait être réalisable en créant une nouvelle colonne dans laquelle les trois autres dates pourraient être combinées et utilisées pour trier les données dans la sortie des tables. –

+0

Malheureusement, il n'y a aucune clé qui relie les différentes dates, ni l'une des informations d'achat à des informations d'ajustement ou de vente. La seule chose commune serait les dates des trois tables séparées. –

+0

Alors vous êtes presque complètement hors de la chance. Il doit y avoir quelque chose entre les tables que vous pouvez relier les tables. Je suppose qu'il y a une sorte de produit ID (stock) entre les 3 tables. En outre, en ce qui concerne les stocks, il semble que votre tring à gérer une sorte de fonds communs de placement et non spécifique à un investisseur individuel. Vous avez besoin d'un terrain d'entente entre les tables. – DRapp

0

Oui, plus de clarification de date est nécessaire. Vous ne pouvez pas combiner 3 en 1 ... ou voulez-vous dire que vous voulez une ligne de résultat qui montre les 3 dates associées à une transaction donnée? Ou, vous voulez (par exemple) l'EARLIEST de 3 dates pour identifier quand la première date de transaction a commencé? Quoi qu'il en soit, veuillez préciser dans votre question, mais voici les options possibles pour vous sans connaître davantage les structures de votre table ... Aussi, si vous le faites directement à partir des tables de foxpro (VFP), vous devrez évidemment ajouter la ";" comme continuation de ligne aux énoncés suivants

select 
     T1.ADate, 
     T2.BDate, 
     T3.CDate, 
     iif(T1.ADate > T2.BDate and T1.ADate > T3.CDate, T1.ADate, 
      iif(T2.BDate > T1.ADate and T2.BDate > T3.CDate, 
       T2.BDate, T3.CDate)) as LargestDate, 
     iif(T1.ADate < T2.BDate and T1.ADate < T3.CDate, T1.ADate, 
      iif(T2.BDate < T1.ADate and T2.BDate < T3.CDate, 
       T2.BDate, T3.CDate)) as EarliestDate 
    from 
     YourTableA T1, 
     YourTableB T2, 
     YourTableC T3 
    where 
      T1.IDKey = T2.IDKey 
     AND T1.IDKey = T3.IDKey 
    into 
     cursor C_SomeTestResultCursor 

Encore une fois, je ne sais pas ce que votre « clé » est ce serait commun entre vos trois tables, vous devrez donc évidemment régler la question sur ce que cet élément (s) est (sont).

+0

Je souhaite afficher chaque type de transaction (achat, ajustement de stock ou vente) par rapport à sa date où toutes les dates individuelles des trois tables source distinctes sont combinées dans une seule colonne de date. Merci pour votre aide jusqu'à présent. Je vais essayer votre suggestion –

+0

Pouvez-vous expliquer ce que vous entendez par combiner les dates? Si le tableau A indique Jan st, le tableau B indique le 2 février, le tableau C indique le 3 mars, que voudriez-vous dans votre tableau des résultats? - Andomar il y a 2 jours. En utilisant ce qui précède comme exemple, ce que je voudrais montrer est chacune des dates individuelles dans une colonne de date "combinée" ie Jan 1 Feb2 Mars 3 avec toutes les autres colonnes tirées des trois tables le long du côté la colonne de date "combinée".L'idée est de montrer les achats, les ajustements des stocks et les ventes d'une ligne de stock particulière par date de transaction –

+0

En regardant comment le commentaire ci-dessus se lit, je peux voir que cela peut causer de la confusion: Je veux des lignes séparées pour chaque date dans la colonne . –