Sql server 数据结果应显示在一列上

Sql server 数据结果应显示在一列上,sql-server,database,tsql,Sql Server,Database,Tsql,我是SQL方面的自学者;我创建了以下代码: SELECT T0.[CardName], T0.[DocDate], T0.[DocDueDate], T2.[U_ExpDelDate], T0.[DocStatus], T1.[SlpName], CASE WHEN DATEDIFF(day,DocDueDate,T2.[U_ExpDelDate]) <= 0 THEN 'Delivered' WHEN DATEDIFF(day,DocDueDate,T2.[U_ExpDelDate])

我是SQL方面的自学者;我创建了以下代码:

SELECT T0.[CardName], T0.[DocDate], T0.[DocDueDate], T2.[U_ExpDelDate], T0.[DocStatus], T1.[SlpName], 
CASE
WHEN DATEDIFF(day,DocDueDate,T2.[U_ExpDelDate]) <= 0 THEN 'Delivered'
WHEN DATEDIFF(day,DocDueDate,T2.[U_ExpDelDate]) >= 0 THEN 'Please Check'
ELSE NULL END AS 'Status',
DATEDIFF(day,DocDueDate,T2.[U_ExpDelDate]) AS 'Age'
FROM OPOR T0  INNER JOIN OSLP T1 ON T0.[SlpCode] = T1.[SlpCode] INNER JOIN POR1 T2 ON T0.[DocEntry] = T2.[DocEntry]

WHERE T0.[DocStatus] ='O' and T2.[U_ExpDelDate] is not null
选择T0.[CardName],T0.[DocDate],T0.[DocDueDate],T2.[U_ExpDelDate],T0.[DocStatus],T1.[SlpName],
案例
当DATEDIFF(day,DocDueDate,T2.[U_ExpDelDate])=0时,则“请检查”
ELSE NULL结尾为“状态”,
DATEDIFF(日期,DocDueDate,T2.[U_ExpDelDate])作为“年龄”
从OPOR T0到T0上的内部连接OSLP T1。[SlpCode]=T1。[SlpCode]到T0上的内部连接POR1 T2。[DocEntry]=T2。[DocEntry]
其中T0.[DocStatus]=“O”和T2.[U_ExpDelDate]不为空
我得到了正确的结果,但现在我想加入交付的结果
,请检查
年龄列中的


您知道吗?

在sql server中连接字符串可以使用运算符或方法来完成

试试这个:

SELECT T0.[CardName], T0.[DocDate], T0.[DocDueDate], T2.[U_ExpDelDate], T0.[DocStatus], T1.[SlpName], 
CASE
WHEN DATEDIFF(day,DocDueDate,T2.[U_ExpDelDate]) <= 0 THEN 'Delivered '
WHEN DATEDIFF(day,DocDueDate,T2.[U_ExpDelDate]) > 0 THEN 'Please Check ' + CAST(DATEDIFF(day,DocDueDate,T2.[U_ExpDelDate]) as varchar)
END AS 'Age'
FROM OPOR T0  INNER JOIN OSLP T1 ON T0.[SlpCode] = T1.[SlpCode] INNER JOIN POR1 T2 ON T0.[DocEntry] = T2.[DocEntry]

WHERE T0.[DocStatus] ='O' and T2.[U_ExpDelDate] is not null
选择T0.[CardName],T0.[DocDate],T0.[DocDueDate],T2.[U_ExpDelDate],T0.[DocStatus],T1.[SlpName],
案例
当DATEDIFF(day,DocDueDate,T2.[U_ExpDelDate])为0时,则“请检查”+将DATEDIFF(day,DocDueDate,T2.[U ExpDelDate])转换为varchar
以“年龄”结束
从OPOR T0到T0上的内部连接OSLP T1。[SlpCode]=T1。[SlpCode]到T0上的内部连接POR1 T2。[DocEntry]=T2。[DocEntry]
其中T0.[DocStatus]=“O”和T2.[U_ExpDelDate]不为空

我已经删除了
else
部分,因为它永远不会出现,因此
datediff
函数将返回小于或等于0或大于0的值。

通过
JOIN
是否要连接?只需使用
+
符号,而不是
,并将值转换为字符串。或者是否要使用列年龄来计算列状态,而不是将相同的公式编写三次?谢谢您的帮助。但是它正在显示(例如年龄栏下的“交付0”)。
DocDueDate
T2.[U_ExpDelDate]
之间的差异是什么,以天为单位?根据你的评论,应该是0…实际上我正在挖掘SAP b1数据库。Docduedate是您创建的文档的到期日,ExpDelDate是ExpExtend交付日期的日期。在一列中,如果未成年,它将显示已交付,请检查或剩余天数。因此,如果它已交付,您不想看到该数字,但如果它不是,您想看到
,请检查
?是的,这就是我想看到的。如果可能的话。