SQL à l'aide de CAS dans les SÉLECTIONNER avec le GROUPE. Besoin de CAS de la valeur, mais à obtenir de la ligne de la valeur

donc basicially il y a 1 question et 1 problème:

1. question - lorsque j'ai comme 100 colonnes dans une table(et pas de clé ou de uindex est réglé) et je veux rejoindre ou sous-sélection de la table avec elle-même, dois-je vraiment écrire chaque nom de colonne?

2. problème - l'exemple ci-dessous montre l'1. question et mon instruction SQL problème

Exemple:

A.FIELD1,
(SELECT CASE WHEN B.FIELD2 = 1 THEN B.FIELD3 ELSE null FROM TABLE B WHERE A.* = B.*) AS CASEFIELD1
(SELECT CASE WHEN B.FIELD2 = 2 THEN B.FIELD4 ELSE null FROM TABLE B WHERE A.* = B.*) AS CASEFIELD2
FROM TABLE A
GROUP BY A.FIELD1

L'histoire est la suivante: si je ne mets pas le CAS dans sa propre instruction select, alors je dois mettre le réel rowname dans le GROUP BY et GROUP BY n'est pas le groupe le NUL de la valeur de l'AFFAIRE, mais la valeur réelle de la ligne. Et parce que des que j'aurais à le rejoindre ou sous-sélection avec toutes les colonnes, car il n'y a pas de clé et pas uindex, ou trouver une autre solution.

DBServer DB2.

Donc maintenant à décrire seulement avec des mots et pas de SQL:
J'ai "éléments de commande", qui peut être divisé en "ZD" et "EK" (1 = ZD, 2 = EK) et peuvent être regroupées par "distributeur". Même si "les éléments de commande" peut avoir l'une des deux différents "départements"(ZD, EK), les champs/lignes pour "ZD" et "EK" sont toujours remplis. J'ai besoin de le regroupement de considérer le "département" et que si le désigné "le département" (ZD ou EK) est en train de changer, alors je veux un nouveau groupe à créer.

SELECT
(CASE WHEN TABLE.DEPARTEMENT = 1 THEN TABLE.ZD ELSE null END) AS ZD,
(CASE WHEN TABLE.DEPARTEMENT = 2 THEN TABLE.EK ELSE null END) AS EK,
TABLE.DISTRIBUTOR,
sum(TABLE.SOMETHING) AS SOMETHING,
FROM TABLE
GROUP BY
ZD
EK
TABLE.DISTRIBUTOR
TABLE.DEPARTEMENT

Ici travaillé dans le SÉLECTIONNER et ZD, EK dans le GROUPE. Le seul problème était, même si EK n'a pas été désigné le DEPARTEMENT, elle est encore ouvert un nouveau groupe si ça a changé, parce qu'il était à l'aide de la réelle EK valeur et non NULLE d'être le CAS, comme j'étais déjà en expliquant haut.

Voulez-vous dire, en vérifiant la valeur de chaque colonne d'Un tableau à la colonne dans la table b avec le même nom de colonne, et toutes les colonnes doivent correspondre? Ou voulez-vous dire à un autre type de logique?
Exactement, mais c'est juste la question de bien et de ne pas le vrai problème, que je vais essayer de plus/mieux expliquer dans les heures à venir.

OriginalL'auteur Khazar | 2013-07-31