SQL - ينفورميكس - تغيير نوع البيانات من عمود من رقمية إلى شخصية
سؤال
ولدي جدول مؤقت الذي لديه قيم الأعداد الرقمية في عمود واحد. أريد أن إما استبدال قيم الأعداد مع القيم الشخصية على أساس بعض المعايير أو أريد أن أضيف عمود آخر من نوع الحرف الذي يدرج تلقائيا القيم في حد ذاته على أساس بعض المعايير.
وإذا كانت x <= 1، وتغير إلى "SP" أو جعل عمود جديد ومخزن "SP" في الصف <ر>
إذا كان x> 1، وتغير إلى "الاتحاد" أو جعل عمود جديد ومتجر "الاتحاد" في هذا الصف
أيضا، تغيير لا يسمح الأوامر على الجداول المؤقتة في نسختي من ينفورميكس.
المحلول
ومعرف SELECT، سنة، CASE WHEN yr_offset <= 1 THEN "SP" ELSE "FA" END حالة
<وأ href = "http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp؟topic=/com.ibm.sqls.doc/sqls909.htm" يختلط = "نوفولو noreferrer "> http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp؟topic=/com.ibm.sqls.doc/sqls909.htm
نصائح أخرى
وأنت الصحيح، لا يمكنك تغيير جدول مؤقت. إضافة عمود إضافي مع هذه القيمة المستمدة يمكن القيام به مع بيان CASE
، أي:
SELECT enroll.ud, enroll.yr, (CASE
WHEN enrollsess.yr_offset <=1 THEN "FA"
ELSE "SP" END)::CHAR(2) AS sess, ...
ووالصب (أي الأقواس و::CHAR(2)
) وربما ليست ضرورية.
إذا يمكن التعبير عن منطق صفر / غير صفرية (انها ليست واضحة في سبيل المثال إذا yr_offset يمكن أن يكون سلبيا)، ثم انه حتى أبسط:
SELECT enroll.id, enroll.yr,
DECODE(enrollsess.yr_offset, 0, "FA", "SP")::CHAR(2) AS sess, ...
<وأ href = "http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp؟topic=/com.ibm.sqls.doc/sqls909.htm" يختلط = "نوفولو noreferrer "> مزيد من التفاصيل حول تركيب كيس من دليل على
SELECT enrollsess.id,
enrollsess.yr,
"SP" sess
FROM enrollsess
WHERE enrollsess.yr_offset <= 1
UNION
SELECT enrollsess.id,
enrollsess.yr,
"FA" sess
FROM enrollsess
WHERE enrollsess.yr_offset > 1
INTO TEMP enrollsess2 WITH NO LOG;