Sql server 将演员和案例结合在一起

Sql server 将演员和案例结合在一起,sql-server,casting,concatenation,case,Sql Server,Casting,Concatenation,Case,我有一个可怕的问题要写 SELECT TOP 25 uinv = (CASE WHEN exported = 1 THEN 'Sent To Accounts' WHEN queued = 1 THEN 'Finalised' WHEN reviewed = 1 THEN 'Pro Forma' WHEN started = 1 THEN 'New' END) , ( CAST(acc_id AS VARCHAR) + ' / ' +

我有一个可怕的问题要写

SELECT TOP 25
uinv = (CASE 
    WHEN exported = 1 THEN 'Sent To Accounts' 
    WHEN queued = 1 THEN 'Finalised' 
    WHEN reviewed = 1 THEN 'Pro Forma' 
    WHEN started = 1 THEN 'New' 
END)
,
(
    CAST(acc_id AS VARCHAR) + ' / ' + 
    CAST(transactiontype AS VARCHAR) + ' / ' + 
    CAST(reference AS VARCHAR) + ' / '
) 
AS label 
FROM tablename;
这很好,但我需要在AS标签中获取uinv字段。我尝试过各种排列,但我就是做不好

需要帮忙吗


谢谢,克里斯你是说像这样吗

SELECT
    tbl.uinv,
    (
        tbl.uinv+
        CAST(acc_id AS VARCHAR) + ' / ' + 
        CAST(transactiontype AS VARCHAR) + ' / ' + 
        CAST(reference AS VARCHAR) + ' / '
    ) 
    AS label 
FROM
(
    SELECT TOP 25
    uinv = (CASE 
        WHEN exported = 1 THEN 'Sent To Accounts' 
        WHEN queued = 1 THEN 'Finalised' 
        WHEN reviewed = 1 THEN 'Pro Forma' 
        WHEN started = 1 THEN 'New' 
    END),
    tablename.acc_id,
    tablename.transactiontype,
    tablename.reference
    FROM tablename
) AS tbl

如果您只想将uinv放在内部而不是作为一个单独的列,那么只需将案例移到内部即可

SELECT TOP 25
(
    CAST(acc_id AS VARCHAR) + ' / ' + 
    CAST(transactiontype AS VARCHAR) + ' / ' + 
    CAST(reference AS VARCHAR) + ' / ' + 
    CASE 
      WHEN exported = 1 THEN 'Sent To Accounts' 
      WHEN queued = 1 THEN 'Finalised' 
      WHEN reviewed = 1 THEN 'Pro Forma' 
      WHEN started = 1 THEN 'New' 
    END
) 
AS label 
FROM tablename;
如果你想把它放在标签内,除了作为一个单独的列,你可以使用CTE

WITH cte AS (
  SELECT *,CASE 
      WHEN exported = 1 THEN 'Sent To Accounts' 
      WHEN queued = 1 THEN 'Finalised' 
      WHEN reviewed = 1 THEN 'Pro Forma' 
      WHEN started = 1 THEN 'New' 
    END uinv
  FROM tablename
)
SELECT uinv,  
    CAST(acc_id AS VARCHAR) + ' / ' + 
    CAST(transactiontype AS VARCHAR) + ' / ' + 
    CAST(reference AS VARCHAR) + ' / ' + 
    uinv
AS label 
FROM cte;

你能给我一个你想要作为输出的样品吗?“我需要在AS标签中获取uinv字段”的含义对我来说不是很清楚。很明显,标签字段是一个连续的值,所以我希望它在这里。当前为:acc_id/transactiontype/reference,我想要/需要:acc_id/transactiontype/reference/univThanks@Chris你也想要大学专栏,非常感谢。我正要告诉您如何将额外字段添加到SELECT中,但您已经这样做了。很好,谢谢。是的,我看到了。我做得有点快。很高兴能帮上忙:)谢谢Joachim,你的第一个例子就是我想做的,但是我在括号的位置上遇到了各种各样的问题。我认为这是在转移注意力。谢谢你的帮助