簡體   English   中英

根據另一個列的值將列轉換為其他值

[英]Convert column to a different value based on another columns value

我有一張桌子

ID | Name | ProdID | Model | StudID
-----------------------------------
1  |  A   |   3    |  hey  |   6
2  |  B   |   4    |  he   |   7
2  |  C   |   5    |  hi   |   8

ProdID為4和5時,我只需將ModelStudID值設為N/A

ID | Name | ProdID | Model | StudID
-----------------------------------
1  |  A   |   3    |  hey  |   6
2  |  B   |   4    |  N/A  |   N/A
2  |  C   |   5    |  N/A  |   N/A

這是到目前為止我所做的一小部分樣本

SELECT      
     ID,
     Name,
     CASE 
          WHEN CONVERT(VARCHAR, ProdID) = 4 THEN CONVERT(VARCHAR, Model) = 'N/A'
     ..

首先,您需要非常小心類型。

  • 除非必須,否則不要將值轉換為字符串。
  • 使用convert()cast() 始終包含varchar()的長度。

所以:

SELECT ID, Name, ProdId,
       (CASE WHEN ProdId IN (4, 5) THEN Model ELSE 'N/A' END) as Model,
       (CASE WHEN ProdId IN (4, 5) THEN CONVERT(VARCHAR(255), StudId) ELSE 'N/A' END) as StudId
       ...

請注意,您需要轉換StudIdStudId是該值是整數。

select ID ,  Name ,  ProdID ,  
CASE WHEN ProdID IN (4,5) THEN 'N/A' ELSE Model END Model ,
CASE WHEN ProdID IN (4,5) THEN 'N/A' ELSE StudID END   StudID from @Table1

嘗試這個

 SELECT      
 ID,
 Name,
 ProdID,
 CASE 
      WHEN ProdID IN( 4,5) THEN 'N/A'
      ELSE CONVERT(VARCHAR, Model)
 END AS 'Model',
 CASE 
      WHEN ProdID IN( 4,5) THEN 'N/A'
      ELSE CONVERT(VARCHAR, StudID)
 END AS 'StudID'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM