我想在a中应用以下条件select query.
IF (TYPE = MBUSA or SDSA or MDSA OR PC) and (FINAL_STATUS = ACTIVE OR EXECUTED)
then GET ID and Parent_ID
ELSEIF (TYPE = MSA) and (FINAL_STATUS = ACTIVE OR EXECUTED)
then GET ID---(USING the ID from the else if condition AS FILTER,
IF TYPE = (DSA OR BUSA) AND (FINAL_STATUS = ACTIVE OR EXECUTED)
then GET ID and Parent_ID)
Run Code Online (Sandbox Code Playgroud)
我需要写一个程序吗?
以下是数据库结构:

该CASE语句可用作语句的等效IF.. THEN... ELSE...语句.不太确定你是如何选择它们的,因为你的问题不清楚,所以这里有一些建议.
要使用条件格式的字符串表示形式选择单个列:
SELECT
CASE
WHEN (TYPE IN ('MBUSA','SDSA','MDSA','PC') AND (FINAL_STATUS IN ('ACTIVE','EXECUTED'))
THEN ID + ' ' + P_ID
WHEN ((TYPE = 'MSA') AND (FINAL_STATUS IN ('ACTIVE','EXECUTED'))
THEN ID
WHEN (TYPE IN ('DSA','BUSA') AND (FINAL_STATUS IN ('ACTIVE','EXECUTED'))
THEN ID + ' ' + P_ID
ELSE ''
END AS columnName
FROM
tableName
Run Code Online (Sandbox Code Playgroud)
要将每个选择到单独的列中
SELECT
CASE
WHEN (TYPE IN ('MBUSA','SDSA','MDSA','PC') AND (FINAL_STATUS IN ('ACTIVE','EXECUTED'))
THEN ID
WHEN ((TYPE = 'MSA') AND (FINAL_STATUS IN ('ACTIVE','EXECUTED'))
THEN ID
WHEN (TYPE IN ('DSA','BUSA') AND (FINAL_STATUS IN ('ACTIVE','EXECUTED'))
THEN ID
ELSE ''
END AS columnOneName
CASE
WHEN (TYPE IN ('MBUSA','SDSA','MDSA','PC') AND (FINAL_STATUS IN ('ACTIVE','EXECUTED'))
THEN P_ID
WHEN ((TYPE = 'MSA') AND (FINAL_STATUS IN ('ACTIVE','EXECUTED'))
THEN NULL
WHEN (TYPE IN ('DSA','BUSA') AND (FINAL_STATUS IN ('ACTIVE','EXECUTED'))
THEN P_ID
ELSE ''
END AS columnTwoName
FROM
tableName
Run Code Online (Sandbox Code Playgroud)
虽然看上面的内容(我可能错误地转录了你的逻辑)但是当你可以逃避2时,有三个案例陈述:
CASE
WHEN (TYPE IN ('MBUSA','SDSA','MDSA','PC','DSA','BUSA') AND (FINAL_STATUS IN ('ACTIVE','EXECUTED'))
THEN ID + ' ' + P_ID
WHEN ((TYPE = 'MSA') AND (FINAL_STATUS IN ('ACTIVE','EXECUTED'))
THEN ID
ELSE ''
END AS columnName
Run Code Online (Sandbox Code Playgroud)
我知道你现在已经放了一个屏幕截图,但是一个SQL小提琴可能会更有帮助或更详细,以便表名等可以很容易
有用的链接:
http://technet.microsoft.com/en-us/library/ms181765.aspx
| 归档时间: |
|
| 查看次数: |
65924 次 |
| 最近记录: |