0
votes

Comment imprimer le résultat dans une ligne différente à l'aide de la requête SQL?

Je suis en train d'exécuter la requête ci-dessous du résultat affichant comme dans une ligne, mais au lieu de l'imprimer une ligne, je souhaite diviser en deux lignes différentes et imprimer la valeur.

Query SQL: < Pré> xxx

sortie: xxx

attendre la sortie de sortie en deux lignes différentes et imprimer la sortie comme ci-dessous xxx

essayé avec char (13) xxx

Obtenir d'erreur comme:

-Ora-00936: expression manquante
00936. 00000 - "Expression manquante"
* Cause:
* Action:
Erreur à la ligne: 2 colonne: 189

existe-t-il un moyen de se diviser en deux lignes?


0 commentaires

3 Réponses :


0
votes

Opérateur de concaténation est double tuyau || , pas plus + .

Aussi, essayez avec chr (10) au lieu de chr (13) .

ce qui signifie que nous parlons de la peine comme xxx


1 commentaires

Merci pour la réponse, mais cela ne fonctionne pas, ne pas imprimer en ligne différente.



0
votes

Vous essayez de l'imprimer comme une colonne. Donc, vous n'obtiendrez pas le résultat souhaité même après avoir utilisé cette fonction de CHR.

Vous devez contacter toutes les colonnes dans une pour obtenir le résultat souhaité. P>

-- table structure -- see the "," between column names
SELECT
    '1'
    || CHR(10) as col1,
    '2' as col2
FROM
    DUAL;

output -- not as expected
------
CO C
-- -
1  2


-- Printable structure -- No "," -- single column output 
SELECT
    '1'
    || CHR(10) 
    || '2' as col1
FROM
    DUAL;

output -- As expected
------
COL
---
1
2


-- Your query should be written something like this
SELECT
    PK_MTF1000
    || '  '
    || CASE WHEN MAX1 IS NULL THEN 'NULL' ELSE MAX1 END -- CHANGED THIS LINE
    || '  '
    || CASE WHEN MIN1 IS NULL THEN 'NULL' ELSE MIN1 END -- CHANGED THIS LINE
    || CHR(10)
    || MID
    || '  '
    || MID1
    || '  '
    || MID2
FROM
    (
        SELECT
            ( CASE
                WHEN MAX(PK_MTF1000) = MIN(PK_MTF1000)
                     AND COUNT(PK_MTF1000) = COUNT(*)
                     OR MAX(PK_MTF1000) IS NULL THEN 'same'
                ELSE 'diff'
            END ) AS PK_MTF1000,
            MAX(PK_MTF1000) AS MAX1,
            MIN(PK_MTF1000) AS MIN1,
            ( CASE
                WHEN MAX(MID) = MIN(MID)
                     AND COUNT(MID) = COUNT(*)
                     OR MAX(MID) IS NULL THEN 'same'
                ELSE 'diff'
            END ) AS MID,
            MAX(MID) AS MID1,
            MIN(MID) AS MID2
        FROM
            MTF1000
        WHERE
            ORG = ' BULGER CAPITAL LLC'
    );


2 commentaires

Merci Tejash pour la réponse, mais malheureusement, il n'a pas résolu mon problème, il s'agit d'impression comme "" même diff 1962008204906400 1962008204823K00 ""


Vous devez l'exécuter en tant que script si vous alliez du développeur SQL. - J'ai mis à jour ma réponse maintenant. Vérifiez s'il vous plaît.



3
votes

Je pense que vous voulez probablement un syndicat, chaque ensemble de données a donc sa propre ligne.

select
    (case when max(PK_MTF1000) = min(PK_MTF1000) and count(PK_MTF1000) = count(*) or max(PK_MTF1000) is null then 'same' else 'diff'end)as PK_MTF1000, 
    max(PK_MTF1000), 
    min(PK_MTF1000)
from MTF1000 where ORG=' BULGER CAPITAL LLC'
union all
select
    (case when max(MID) = min(MID) and count(MID) = count(*) or max(MID) is null then 'same' else 'diff'end) as MID, 
    max(MID), 
    min(MID)
from MTF1000 where ORG=' BULGER CAPITAL LLC';


2 commentaires

Merci pour la mise à jour, parfaitement accepté avec vous, ici un problème si le type de données est différent, cela ne fonctionnera pas. Imaginez si j'ai 1000 colonnes, il sera difficile d'ajouter du type de données pour une colonne différente.


C'est vrai. Si vous ne pouvez pas convertir facilement les types de données, vous pourriez avoir besoin de 2 requêtes différentes.