 |
|
[.NET]
ขออนุญาตสอบถามเรื่อง Query Sql ในการเอา Alias มาใช้งานหน่อยครับ |
|
 |
|
|
 |
 |
|
(**ดูจากรูปผมต้องการ alias ที่ชื่อ SearchMonth มา Where อะครับ)ผมลองมาหลายวิธีแล้วอะครับ ยังทำไม่ได้สักที รบกวนชี้แนะหน่อยครับ

Code (SQL)
01. Select a.RequestID,b.FullName,a.RequestDate,( select DATEname(M,RequestDate) ) as SearchMonth
02. ,c.ErrorName,concat( substring ( a.RequestRemark,0,50), '...' ) as SubRemark,SubStatus = Case a.RequestStatus
03. when 'Open' then 'รอดำเนินการ'
04. When 'Closed' then 'เสร็จเรียบร้อย'
05. End
06. From RtbRequest a
07. Left outer join tbLogin b
08. On a.RequestEmpID = b.id
09. Left outer join RtbError c
10. On a.RequestErrorID = C.ErrorID
11. Where rrequestDate = 'January' order by a.requestID DESC
Tag : .NET, Ms SQL Server 2014, Web (ASP.NET), Win (Windows App), VB.NET
|
|
 |
 |
 |
 |
Date :
2017-05-26 22:22:21 |
By :
adminliver |
View :
1314 |
Reply :
8 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่รู้เหมือนกันว่าทำได้ไหม
เท่าที่รู้คือมันใช้แบบตรง ๆ ไม่ได้ครับ
ปกติทำอยู่ 2 แบบครับ
1. ยกคำสั่งมาทั้งชุดเลย
Code (SQL)
01. Select a.RequestID,b.FullName,a.RequestDate,( select DATEname(M,RequestDate) ) as SearchMonth
02. ,c.ErrorName,concat( substring ( a.RequestRemark,0,50), '...' ) as SubRemark,SubStatus = Case a.RequestStatus
03. when 'Open' then 'รอดำเนินการ'
04. When 'Closed' then 'เสร็จเรียบร้อย'
05. End
06. From RtbRequest a
07. Left outer join tbLogin b
08. On a.RequestEmpID = b.id
09. Left outer join RtbError c
10. On a.RequestErrorID = C.ErrorID
11. Where
12. ( select DATEname(M,RequestDate) )= 'January'
13. order by a.requestID DESC
2. เอาวงเล็บครอบ
Code (SQL)
01. select * from (
02. Select a.RequestID,b.FullName,a.RequestDate,( select DATEname(M,RequestDate) ) as SearchMonth
03. ,c.ErrorName,concat( substring ( a.RequestRemark,0,50), '...' ) as SubRemark,SubStatus = Case a.RequestStatus
04. when 'Open' then 'รอดำเนินการ'
05. When 'Closed' then 'เสร็จเรียบร้อย'
06. End
07. From RtbRequest a
08. Left outer join tbLogin b
09. On a.RequestEmpID = b.id
10. Left outer join RtbError c
11. On a.RequestErrorID = C.ErrorID
12. ) t1
13. Where SearchMonth= 'January' order by requestID DESC
ผิดถูกขออภัยน่ะครับ
ไม่ค่อยแม่นเหมือนกัน
|
 |
 |
 |
 |
Date :
2017-05-27 20:15:48 |
By :
fonfire |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (SQL)
01. SELECT Fuck.*, tmp69.*, ISNULL (FuckAgain.Status, 'นมบูดนมเน่า' ) AS ASS
02. FROM RtbRequest Fuck
03. OUTER APPLY
04. (
05. SELECT TOP 1 DATENAME(M, GETDATE()), DATENAME(M, DATEADD(M, 1, GETDATE()))
06. FROM RtbRequest tmp96
07. WHERE Fuck.RequestEmpID = tmp96.RequestEmpID
08. ) tmp69
09. (FuckAliasMomColumn1, FuckAliasMomColumn2
10. )
11. LEFT JOIN RtbRequest FuckAgain ON Fuck.RequestEmpID = FuckAgain.RequestEmpID
12. WHERE FuckAliasMomColumn1 = 'May'
|
 |
 |
 |
 |
Date :
2017-05-27 20:51:31 |
By :
รถคันนี้สำดำ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เล่าเรื่องจริงและตลกให้ฟัง
มีของอยู่ 2 สิ่งและเป็นสิ่งเดียวกัน ยกตัวอย่างเช่น
Fuck.RequestEmpID = FuckAgain.RequestEmpID
ไม่เท่ากับ
FuckAgain.RequestEmpID = Fuck.RequestEmpID
มีคนเคยเถึยงผมว่า "มันไม่เท่ากัน"
...
...
...
สุดท้ายผมยกฉีกกระดาษมาแผ่นหนึ่ง
--- ใช้ดินสอดำ 2 B เขียนลงไป (หนึ่งฝั่งซ้ายและหนึ่งฝั่งขวา)
------ 1 = 1
--- ย้ายหนึ่งฝั่งซ้ายเอาไปไว้ฝั่งขวา
--- ย้ายหนึ่งฝั่งขวาเอาไปไว้ฝั่งซ้าย
ผมถามลอยฯไปว่า "มันเท่ากันไหม?" + 55555
|
 |
 |
 |
 |
Date :
2017-05-27 21:08:48 |
By :
รถคันนี้สีดำ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ให้ปวดสมองเล่นฯ CROSS APPLY & OUTER APPLY & CROSS APPLY +55555
Code (SQL)
01. USE tempdb
02. GO
03.
04. DECLARE @LoanAmount NUMERIC (10, 2) = 10000
05. DECLARE @AnnualRate NUMERIC (10, 8) = 6.8
06. DECLARE @NumberOfMonths INT = 48
07. DECLARE @StartDate DATETIME = '2013-12-01' ;
08.
09.
10.
11.
12.
13. WITH InputVariables
14. AS (
15. SELECT P, M, R, C = ROUND((P * R) / (1 - POWER(1 + R, - M)), 2)
16. FROM (
17. SELECT P = @LoanAmount, M = @NumberOfMonths, R = @AnnualRate / 12 / 100
18. ) InputData
19. ),
20. MonthlyPayments (
21. PmtNo,
22. PmtDate,
23. Balance,
24. Principle,
25. Interest,
26. CumulPrinciple,
27. CumulInterest
28. )
29. AS (
30. SELECT X,
31. @StartDate,
32.
33. CAST (NewBalance AS NUMERIC (10, 2)),
34. CAST (P - NewBalance AS NUMERIC (10, 2)),
35. CAST (C - (P - NewBalance) AS NUMERIC (10, 2)),
36. CAST (P - NewBalance AS NUMERIC (10, 2)),
37. CAST (C - (P - NewBalance) AS NUMERIC (10, 2))
38. FROM InputVariables
39. CROSS APPLY (
40. SELECT X = 1
41. ) CalcPmtNo
42. CROSS APPLY (
43. SELECT NewBalance = ROUND(P * POWER(1 + R, X) - (POWER(1 + R, X) - 1) * C / R, 2)
44. ) CalcNewBalance
45.
46. UNION ALL
47.
48. SELECT X,
49. DATEADD( MONTH , 1, mp.PmtDate),
50. CAST (NewBalance AS NUMERIC (10, 2)),
51. CAST (mp.Balance - NewBalance AS NUMERIC (10, 2)),
52. CAST (C - (mp.Balance - NewBalance) AS NUMERIC (10, 2)),
53. CAST (mp.CumulPrinciple + mp.Balance - NewBalance AS NUMERIC (10, 2)),
54. CAST (mp.CumulInterest + C - (mp.Balance - NewBalance) AS NUMERIC (10, 2))
55. FROM MonthlyPayments mp
56. CROSS JOIN InputVariables
57. CROSS APPLY (
58. SELECT X = mp.PmtNo + 1
59. ) CalcPmtNo
60. CROSS APPLY (
61. SELECT NewBalance = CASE
62. WHEN X = M
63. THEN 0.00 /* Last Payment */
64. ELSE
65. ROUND(P * POWER(1 + R, X) - (POWER(1 + R, X) - 1) * C / R, 2)
66. END
67. ) CalcNewBalance
68. WHERE X <= M
69. )
70. SELECT PmtNo,
71. PmtMonth = DATENAME( MONTH , PmtDate) + STR( YEAR (PmtDate), 5),
72. PmtAmount = Principle + Interest,
73. Principle,
74. Interest,
75. CumulPrinciple,
76. CumulInterest,
77. Balance
78. FROM MonthlyPayments
79. ORDER BY PmtNo
80. OPTION (MAXRECURSION 32767);
|
 |
 |
 |
 |
Date :
2017-05-27 21:23:57 |
By :
รถคันนี้สีดำ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
โลกใบนี้ไม่ได้มีเพียงหนึ่ง
--- จะเป็นขี้ข้า พ่อค้า คหบดี มันก็ไม่แตกต่างกัน (ตายเหมือนกัน)
ผมได้ SQL Query ที่สามารถเข้าใจได้แต่อธิบายยาก (ยังไม่เพียงพอสำหรับผม)
--- FIFO Cost Of Good Sold.
Code (SQL)
01. DECLARE @ table TABLE
02. (
03. entrydate DATETIME, openingbal DECIMAL (15, 4), credit DECIMAL (15, 4), debit DECIMAL (15, 4), closingbal DECIMAL (15, 4)
04. );
05.
06. INSERT INTO @ table
07. SELECT '2014-09-01 12:05:43.203' , 0.000, 0.000, 1.000, 0.000
08. UNION
09. SELECT '2014-09-01 13:05:43.203' , 0.000, 1.000, 0.000, 0.000
10. UNION
11. SELECT '2014-09-10 08:05:43.203' , 0.000, 1.000, 0.000, 1.000
12. UNION
13. SELECT '2014-10-02 23:05:43.203' , 94000.000, 0.000, 900.000, 93100.000
14. UNION
15. SELECT '2014-10-03 23:05:43.203' , 0.000, 1000.000, 0.000, 0.000
16. UNION
17. SELECT '2014-10-03 23:06:43.203' , 0.000, 0.000, 500.000, 0.000
18. UNION
19. SELECT '2014-10-14 23:52:27.327' , 4000.000, 0.000, 1500.000, 2500.000;
20.
21.
22.
23.
24. UPDATE @ table SET openingbal = openingbal +
25. ( SELECT SUM ( ISNULL (credit, 0.000) - ISNULL (debit, 0.000)) FROM @ table
26. WHERE entrydate < '2014-10-01 23:05:43.203' )
27. WHERE entrydate = '2014-10-02 23:05:43.203'
28. ; WITH cte
29. AS
30. ( SELECT *, ROW_NUMBER() OVER
31. ( ORDER BY entrydate Asc
32. ) rid
33. FROM @ table WHERE entrydate >= '2014-10-01 23:05:43.203'
34. ),
35. cte1
36. AS
37. (
38. SELECT entrydate, openingbal , credit, debit, CAST (openingbal + credit - debit AS DECIMAL (15, 4)
39. ) AS closingbal, rid
40. FROM cte WHERE rid = 1
41. UNION ALL
42. SELECT curr.entrydate, CAST (curr.openingbal + prev.closingbal AS DECIMAL (15, 4)
43. ), curr.credit, curr.debit, CAST (curr.openingbal + prev.closingbal + curr.credit - curr.debit AS DECIMAL (15, 4)
44. ) AS closingbal, curr.rid
45. FROM cte curr INNER JOIN cte1 prev ON curr.rid = prev.rid + 1
46. )
47.
48. SELECT *
49. FROM cte1
50. ORDER BY entrydate;
51.
52.
53.
54.
55.
56.
57.
58.
|
 |
 |
 |
 |
Date :
2017-05-31 20:48:36 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|