2017-08-17 9 views
0

次のコードを使用して作成できるテーブルがあります。私たちは、テーブルにサンプルデータを入力し、今、私のテーブルは以下のように見ている必要があり特定の条件に従ってSQL Serverからデータを取得します

**SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
SET ANSI_PADDING ON 
GO 
CREATE TABLE [dbo].[ACBilling](
    [ID] [int] IDENTITY(1,1) NOT NULL, 
    [Invoice] [int] NULL, 
    [Product] [varchar](500) NULL, 
    [Rate] [money] NULL, 
    [Quantity] [int] NULL, 
    [Amount] AS ([Rate]*[Quantity]), 
    [CGSTRate] [money] NULL, 
    [CGSTAmount] [money] NULL, 
    [SGSTRate] [money] NULL, 
    [SGSTAmount] [money] NULL, 
    [IGSTRate] [money] NULL, 
    [IGSTAmount] [money] NULL, 
    [TotalTaxAmount] AS (([CGSTAmount]+[SGSTAmount])+[IGSTAmount]) 
) ON [PRIMARY] 
GO 
SET ANSI_PADDING OFF 
GO** 

- 次の列CGSTRateSGSTRateIGSTRate、これらは税の3種類あるご検討ください enter image description here

(割合かもしれません差額)が課金され、関連する税額は列CGSTAmount,SGSTAmountおよびIGSTAmountにそれぞれ保存されます。

さて、請求書の列を検討してください、あなたは請求書#1が3つのレコードが含まれていることがわかります、請求書#2は3つのレコードが含まれており、請求書#3はCGSTRateSGSTRateIGSTRates異なると関連CGSTAmount、SGSTAmountとIGSTAmountと3つのレコードが含まれています。私はSQLはCGSTRateで個別請求書番号、金額の列の合計によって、各税パーセントためSGSTRateIGSTRateを、レコードを並べ替える必要があるような方法でクエリを実行したい

、それは一緒に別の列を追加する必要がありますCGSTAmountのSUM、SGSTAmountおよびIGSTAmountとなるので、以下の結果が得られるはずです。

enter image description here

誰かが私を助けることができますか?

+1

詳細については、このリンク(https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)をご覧ください。質問を改善する方法 – TheGameiswar

+1

条件付き集計またはピボットのいずれかを使用してこれを行うことができます。これは数十回ではないにしても、これはインターネット上で何時でも何千回も尋ねられています。 –

答えて

0

おそらくあなたは大文字小文字を探しています。試してみてください -

SELECT [Invoice], 
     SUM([Amount]), 
     SUM(CASE WHEN [CGSTRate] = '6%' THEN [CGSTAmount]) END AS "CGST AMT 6%", 
     SUM(CASE WHEN [CGSTRate] = '9%' THEN [CGSTAmount]) END AS "CGST AMT 9%", 
     SUM(CASE WHEN [CGSTRate] = '12%' THEN [CGSTAmount]) END AS "CGST AMT 12%", 
     SUM(CASE WHEN [SGSTRate] = '6%' THEN [SGSTAmount]) END AS "SGST AMT 6%", 
     SUM(CASE WHEN [SGSTRate] = '9%' THEN [SGSTAmount]) END AS "SGST AMT 9%", 
     SUM(CASE WHEN [SGSTRate] = '12%' THEN [SGSTAmount]) END AS "SGST AMT 12%", 
     SUM(CASE WHEN [IGSTRate] = '12%' THEN [IGSTAmount]) END AS "IGST AMT 12%", 
     SUM(CASE WHEN [IGSTRate] = '24%' THEN [IGSTAmount]) END AS "IGST AMT 24%", 
     SUM(CASE WHEN [IGSTRate] = '28%' THEN [IGSTAmount]) END AS "IGST AMT 28%" 
FROM [dbo].[ACBilling] 
GROUP BY [Invoice]; 

希望します。

+0

次のエラーが発生しました - メッセージ102、レベル15、状態1、行3 ')'の近くの構文が正しくありません。 –

+0

各Case/When文には "END"が必要です。 –

+0

ありがとう、実際に私はSQLの初心者です。あなたがそのコンセプトを理解できるように、既存のコードを更新することで助けてください。 –

関連する問題