Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何避免SQL查询的最终结果重复_Sql Server - Fatal编程技术网

Sql server 如何避免SQL查询的最终结果重复

Sql server 如何避免SQL查询的最终结果重复,sql-server,Sql Server,DECLARE@Doc INT='21' 选择不同的 [姓名或头衔] ,[主题] ,[批准说明] ,TypeOfApproval.[Name]为[TypeOfApproval] ,TypeOfExpense.[Name]为[TypeOfExpense] ,ExpenseNature.【名称】为[ExpenseNature] ,BudgetType.[Name]为[BudgetType] ,序号。[名称]为[当前状态] ,[ImageBits]作为Imj 从[SaveImage].[dbo].[U

DECLARE@Doc INT='21'
选择不同的
[姓名或头衔]
,[主题]
,[批准说明]
,TypeOfApproval.[Name]为[TypeOfApproval]
,TypeOfExpense.[Name]为[TypeOfExpense]
,ExpenseNature.【名称】为[ExpenseNature]
,BudgetType.[Name]为[BudgetType]
,序号。[名称]为[当前状态]
,[ImageBits]作为Imj
从[SaveImage].[dbo].[UBL]记录
在[SaveImage].[dbo].[UBL\u状态更改].[State\u ID]=Rec.[State\u ID]上左键联接[SaveImage].[dbo].[UBL\u状态更改]
在[SaveImage].[dbo].[UBL\U ApprovalType].[UBL\U ID]=Rec.[ID]上左键联接[SaveImage].[dbo].[UBL\U ApprovalType]
左联合[SaveImage].[dbo].[ApprovalType]批准类型对批准类型的批准。[ID]=[SaveImage].[dbo].[UBL\U ApprovalType].[ApprovalType\U ID]
在[SaveImage].[dbo].[UBL\U费用性质].[UBL\U费用性质].[UBL\U ID]=Rec.[ID]上左键联接[SaveImage].[dbo].[UBL\U费用性质]
将[SaveImage].[dbo].[Expense]类型上的[Expense]类型左联接。[ID]=[SaveImage].[dbo].[UBL\U费用性质].[Expense性质\U ID]
左联接[SaveImage].[dbo].[UBL\U费用性质]在[SaveImage].[dbo].[UBL\U费用性质].[UBL\U ID]=Rec.[ID]
在ExpenseNature上左键联接[SaveImage].[dbo].[费用性质]ExpenseNature.[ID]=[SaveImage].[dbo].[UBL\U费用性质].[Expense性质\U ID]
在[SaveImage].[dbo].[UBL\U预算状态].[UBL\U ID]=Rec.[ID]上左键联接[SaveImage].[dbo].[UBL\U预算状态]
左联合[SaveImage].[dbo].[Budget Status]BudgetType ON BudgetType.ID=[SaveImage].[dbo].[UBL\U预算状态].[Budget Status\U ID]
记录上的内部联接[SaveImage].[dbo].[State]SN.[State\u ID]>=SN.ID
左连接[SaveImage].[dbo].[Img]Imj上的Imj。[CreatorName]=SN.[Name]
其中Rec.[ID]=(@Doc)

请注意,您需要在表中按id分区并按此列联接。

是否尝试过此方法:使用DISTINCT ON(列名称)


预期的输出是什么?它们不是重复的,而是具有不同
当前状态的行
您希望返回哪一行?我只想返回一行,然后返回4个不同的Imj[列]值,因为记录相同但具有不同的状态。如果您可以编辑此帖子并提供预期输出,则会更好:)预期输出将是除Imj列之外的所有列都保持不变,Imj列的值将与列名称(如imj1、imj2、imj3、IMJ4)匹配谢谢您的帮助。对初学者来说,向你们两位这样的技术人员学习真的很有帮助。我正在处理表的不同联接,我的结果集如上所述。我需要转换一个列的值,并将它们求值为具有相同行ID的不同列。为此,我需要使用T-Sql的Pviot函数。请纠正我,如果它可以帮助生成所需的结果集。
; with cte as
(
select [approval description]
       , typeofapproval
       , typeofexpense
       , expensenature
       , budgettype
       , [current state]
       , imj
       , column_or_composition_of_columns_that_are_primary_key 
       , rn = row_number() over (partition by column_or_composition_of_columns_that_are_primary_key order by [current state])
from table_name
)
select cte.[approval description]
       , cte.typeofapproval
       , cte.typeofexpense
       , cte.expensenature
       , cte.budgettype
       , cte.currentstate
       , cte.imj
       , cte2.imj
       , cte3.imj
       , cte4.imj
from cte
where rn = 1
left join (select imj
        from cte
        where rn = 2) cte2 on cte.column_or_composition_of_columns_that_are_primary_key = cte2.column_or_composition_of_columns_that_are_primary_key
left join (select imj
        from cte
        where rn = 3) cte3   on cte.column_or_composition_of_columns_that_are_primary_key = cte3.column_or_composition_of_columns_that_are_primary_key
left join (select imj
        from cte
        where rn = 4) cte3   on cte.column_or_composition_of_columns_that_are_primary_key = cte4.column_or_composition_of_columns_that_are_primary_key
SELECT DISTINCT ON Column_1, column_2 FROM TABLE_NAME